我有一个XML文件,如下所示:
<SNS>
<SN>aaaa</SN>
<SN>bbbb</SN>
<LN>cccc</LN>
<SN>dddd</SN>
<SN>eeee</SN>
<LN>ffff</LN>
</SNS>
所需输出:
<SN>aaaa</SN>
<LN>cccc</LN>
<SN>bbbb</SN>
<LN>cccc</LN>
<SN>dddd</SN>
<LN>ffff</LN>
<SN>eeee</SN>
<LN>ffff</LN>
如何添加每个带有<LN>
的<SN>
标签?
只需处理所有SN
元素,并在它们的模板中复制以下同级LN
:
<xsl:template match="SNS">
<xsl:apply-templates select="SN"/>
</xsl:template>
<xsl:template match="SN">
<xsl:copy-of select="., following-sibling::LN[1]"/>
</xsl:template>
https://xsltfiddle.liberty-development.net/pPzifq2
在 XSLT 3 中,您还可以简单地处理每个SN
及其同级LN
,并推动它们完成标识转换:
<xsl:mode on-no-match="shallow-copy"/>
<xsl:template match="SNS">
<xsl:apply-templates select="SN!(., following-sibling::LN[1])"/>
</xsl:template>
https://xsltfiddle.liberty-development.net/pPzifq2/1