我如何在xslt中使用for-each

时间:2013-10-14 18:38:30

标签: xml xslt

好的我正在尝试打印Ancient_wonders / wonder下的每个元素,这些元素与name相同但是当我这样做时:

 <xsl:for-each select="ancient_wonders/wonder">
     <xsl:value-of select="./name"/>
 </xsl:for-each>

它只打印第一个等于name的元素。这是我的xml:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="02-03.xsl"?>
<ancient_wonders>
 <wonder>
    <location>
        Rhodes, Greece
    </location>

    <name language="English">
        Christ of Brasil
    </name>
    <name language="English">
        Colossus of Rhodes
    </name>
    <name language="Chinese">
        Great Wall of China
    </name>
</wonder>

有人可以向我解释如何做到这一点。

1 个答案:

答案 0 :(得分:0)

您的XML中只有一个奇迹元素,但有多个名称元素。 xsl:for-each 循环遍历 wonder 元素,因此只会迭代一次。如果要输出名称元素,请迭代这些....

<xsl:for-each select="ancient_wonders/wonder/name">
    <xsl:value-of select="."/>
</xsl:for-each>

或许,如果你确实有多个奇迹,你可以使用嵌套的 xsl:for-each

<xsl:for-each select="ancient_wonders/wonder">
    Location: <xsl:value-of select="location" />
    <xsl:for-each select="name">
         <xsl:value-of select="."/>
    </xsl:for-each>
</xsl:for-each>