【发布时间】:2021-08-13 10:24:33
【问题描述】:
我有一个格式的输入 json
[
{
"PERSON_ID": 78,
"EFFECTIVE_START_DATE": "2013-12-02 00:00:00",
"LAST_NAME": "Hulk78"
},
{
"PERSON_ID": 78,
"EFFECTIVE_START_DATE": "2020-06-24 07:29:26",
"LAST_NAME": "Hulks78"
},
{
"PERSON_ID": 79,
"EFFECTIVE_START_DATE": "2015-12-02 00:00:00",
"LAST_NAME": "Hulk79"
},
{
"PERSON_ID": 79,
"EFFECTIVE_START_DATE": "2020-07-24 07:29:26",
"LAST_NAME": "Hulks79"
},
{
"PERSON_ID": 80,
"EFFECTIVE_START_DATE": "2013-12-10 00:00:00",
"LAST_NAME": "Hulk15"
}
]
预期输出
[
{
"PersonId": 78,
"value": [
{
"EffectiveDate": "2013-12-02 00:00:00",
"lastName":"Hulk78"
},
{
"EffectiveDate": "2020-06-24 07:29:26",
"lastName":"Hulks78"
}
]
}
....
]
我想通过对 person_id 值进行分组来转换输入 json,并为每个组将其各自的有效日期和姓氏添加到与该人员 ID 对应的值数组中。 下面是我试过的xslt。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" version="3.0"
xmlns="http://www.w3.org/2005/xpath-functions" xpath-default-namespace="http://www.w3.org/2005/xpath-functions" expand-text="yes">
<xsl:param name="input"/>
<xsl:output method="text"/>
<xsl:template name="xsl:initial-template">
<xsl:variable name="input-as-xml" select="json-to-xml($input)"/>
<xsl:variable name="transformed-xml" as="element(array)">
<array>
<xsl:for-each-group select="$input-as-xml" group-by="//number[@key='PERSON_ID']">
<map>
<string key="PersonId">
<xsl:value-of select="current-grouping-key()"/>
</string>
<array key="Value">
<xsl:for-each select="current-group()">
<map>
<string key="EffectiveDate">
<xsl:value-of select="../string[@key='EFFECTIVE_START_DATE']"/>
</string>
<string key="LASTNAME">
<xsl:value-of select="@LAST_NAME"/>
</string>
</map>
</xsl:for-each>
</array>
</map>
</xsl:for-each-group>
</array>
</xsl:variable>
<xsl:value-of select="xml-to-json($transformed-xml)"/>
</xsl:template>
样式表>
谁能帮助我了解如何从当前组中取出每个生效日期和姓氏。
这是我得到的输出
[
{
"PersonId": "78",
"Value": [
{
"EffectiveDate": "",
"LASTNAME": ""
}
]
},
{
"PersonId": "79",
"Value": [
{
"EffectiveDate": "",
"LASTNAME": ""
}
]
},
{
"PersonId": "80",
"Value": [
{
"EffectiveDate": "",
"LASTNAME": ""
}
]
}
]
【问题讨论】:
-
您能否向我们展示您生成的 JSON 格式的输出文件?
-
[{"PersonId":"78","Value":[{"EffectiveDate":"","LASTNAME":""}]},{"PersonId":"79", "值":[{"EffectiveDate":"","LASTNAME":""}]},{"PersonId":"80","Value":[{"EffectiveDate":"","LASTNAME":" "}]}]
-
这是我得到的输出...我无法添加有效数据和姓氏值。
-
请在问题中添加输出json(在预期输出之前,所以我们看到它是结构化的
标签: xslt xslt-2.0 xslt-grouping xslt-3.0