XSTL - 维护顺序



我有一个输入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>

最新更新