我有一个输入xml为:
<group>
<item>
<id>item 1</id>
<CategoryName>blue</CategoryName>
<id>item 2</id>
<CategoryName>orange</CategoryName>
<id>item 3</id>
<CategoryName>green</CategoryName>
</item>
</group>
我想将其转换为
<group>
<item>
<itemNode><id>item 1</id><itemNode>
<Color>blue</Color>
<itemNode><id>item 2</id><itemNode>
<Color>orange</Color>
<itemNode><id>item 3</id><itemNode>
<Color>green</Color>
</item>
当我使用 xpath 时,它首先显示 itemNode 标签,然后显示颜色标签,但不按数据最初所在的顺序显示。
有什么想法吗?
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="item">
<group>
<item>
<xsl:for-each select="id">
<xsl:variable name="pos" select="position()" />
<itemNode><id><xsl:value-of select="."/></id></itemNode>
<color><xsl:value-of select="../CategoryName[$pos]"/></color>
</xsl:for-each>
</item>
</group>
</xsl:template>
</xsl:stylesheet>