我有一个像jsonPayload:
{
"test": {
"demo": [
{
"thirdA": {
"forthB": [
{
"aaa": [
{
"bbb": "bbb"
}
],
"ccc": "ccc",
"ddd": "ddd",
"eee": "eee",
"fff": "fff",
"ggg": "ggg"
}
]
}
},
{
"thirdA": {
"forthB": [
{
"aaa": [
{
"bbb": "bbb1"
}
],
"ccc": "ccc1",
"ddd": "ddd2",
"eee": "eee3",
"fff": "fff4",
"ggg": "ggg5"
}
]
}
}
]
}
}
我想使用xslt将thirdA
替换为third
,将forthB
替换为forth
。我试过了,但是forthB
具有一个jsonElement的jsonArray返回了jsonObject。当我在第一个forthB
中添加第二个jsonObject时,我在第一个demo
jsonObject中获得了jsonArray,但是在第二个demo
jsonArray内的另一个aboutB仍然是jsonObject。
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="//jsonObject/test/demo/thirdA[local-name()='thirdA']">
<third>
<xsl:apply-templates />
</third>
</xsl:template>
<xsl:template match="processing-instruction('xml-multiple')[.='forthB']"/>
<xsl:template match="//jsonObject/test/demo/thirdA/forthB[local-name()='forthB']">
<xsl:if test="count(//jsonObject/test/demo/thirdA/forthB) >0">
<xsl:processing-instruction name="xml-multiple"/>
</xsl:if>
<third>
<xsl:apply-templates />
</third>
</xsl:template>
</xsl:stylesheet>
感谢任何想法!
致谢