-1

私は次のような入力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タグが表示されますが、データが元々含まれていた順序では表示されません。

シーケンスを維持しながら変換する方法はありますか?

4

1 に答える 1

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>
于 2012-11-16T19:43:23.743 に答える