我有以下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中没有斜线使用感到非常困惑 - 我可以搞砸那里吗?
感谢您的帮助。
答案 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节点。所以。访问它的内容,同时@访问各种属性。