XSL - 维护序列

时间:2012-11-16 19:19:59

标签: xslt xslt-1.0 xslt-2.0

我有一个输入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时,它首先显示itemNodes标签,然后显示Color标签,但不显示数据所在的顺序。

我有什么想法可以改变,但仍然保持序列?

1 个答案:

答案 0 :(得分:0)

<?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>