Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 我如何在xslt中使用每一个_Xml_Xslt - Fatal编程技术网

Xml 我如何在xslt中使用每一个

Xml 我如何在xslt中使用每一个,xml,xslt,Xml,Xslt,好的,我正在尝试打印“古代奇迹/奇迹”下的每个元素,这些元素等于名称,但当我这样做时: <xsl:for-each select="ancient_wonders/wonder"> <xsl:value-of select="./name"/> </xsl:for-each> 它只打印等于name的第一个元素。以下是我的xml: <?xml version="1.0"?> <?xml-stylesheet type="te

好的,我正在尝试打印“古代奇迹/奇迹”下的每个元素,这些元素等于名称,但当我这样做时:

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

罗德岛,希腊
巴西基督
罗德斯巨人
中国长城


有人能告诉我怎么做吗。

您的XML中只有一个wonder元素,但是有多个name元素。您xsl:for-eachwonder元素上循环,因此只迭代一次。如果要输出name元素,请迭代这些

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

或者,如果您确实有多个wonder,例如,您可以为每个

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

地点:

难怪,您只有一个
wonder
元素。您正在迭代单个wonder并返回其中的第一个
name
元素。坦白地说,我发现XSLT是一种声明性语言,对于每一种,我都有反直觉的感觉。@Tom感谢你的评论帮助我理解了一个lotok。我认为每项工作都有不同的方法。谢谢你的回答。但现在,我试图用与英语相同的语言打印每个名字,但这行不通。这就是我所做的: