我正在尝试列出包含某个 id 的子节点的所有节点。
以这个xml为例:
<foo>
<bar name="hello">
<baz id="1" />
</bar>
<bar name="there">
<baz id="1" />
<baz id="2" />
</bar>
<bar name="world">
<baz id="3" />
</bar>
</foo>
我想出了以下 XSLT 模板,其中包含两个嵌套for-each
循环
<xsl:for-each select="/foo/bar/baz">
<xsl:variable name="id" select="@id" />
<xsl:value-of select="$id" />
<ul>
<xsl:for-each select="/foo/bar/baz">
<xsl:variable name="local_id" select="@id" />
<xsl:variable name="bar_name" select="../@name" />
<xsl:if test="$id = $local_id">
<li><xsl:value-of select="$bar_name" /></li>
</xsl:if>
</xsl:for-each>
</ul>
</xsl:for-each>
这给出了以下结果
1
- hello
- there
1
- hello
- there
2
- there
3
- world
问题是第一个键/值对是重复的。