XSLT和`foreach`

时间:2011-11-01 19:09:32

标签: xslt

我有以下xml行,我正在尝试使用XSLT进行转换,但我遇到了麻烦。这条线是

<app>
<lem>text</lem>
<rdg wit="V" type="add.">text1</rdg>
<rdg wit="S" type="add.">text2</rdg>
<rdg wit="SV" type="add.">text3</rdg>
</app>

我有几个app elements,然后其中可能有1到4个rdg个元素,所以我试图在{{1}内写一个foreach语句声明,但它不起作用。

我想说:

foreach

但是现在这不起作用。目前的情况是 - 这会产生正确数量的循环但是对于<xsl:for-each select="//tei:app"> <li><xsl:value-of select="tei:lem"/><xsl:text>] </xsl:text> <xsl for-each select="tei:rdg"> <!--I hoping this would loop through each <rdg> within a given <app> element --> <xsl:value-of select="//tei:rdg"/> <xsl:value-of select="//tei:rdg/@type"/> <xsl:value-of select="//tei:rdg/@wit"/> </xsl:for-each> </li> </xsl:for-each> 的每个实例,我都得到了第rdg个的值。但是,如果我删除三个rdg元素中的双斜杠,那么我没有得到任何值。

你能发现我做错的事吗?有时我对斜线,双斜线,xpath中没有斜线使用感到非常困惑 - 我可以搞砸那里吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

试试这个:

<xsl:for-each select="//tei:app">
    <li><xsl:value-of select="tei:lem"/><xsl:text>] </xsl:text>
        <xsl for-each select="tei:rdg"> <!--I hoping this would loop through each <rdg> within a given <app> element -->
        <xsl:value-of select="."/>
        <xsl:value-of select="@type"/>
        <xsl:value-of select="@wit"/>
        </xsl:for-each>
    </li>
</xsl:for-each>

在你的内部循环中,你的“current()”节点是一个tei:rdg节点。所以。访问它的内容,同时@访问各种属性。