0

特定の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>

for-eachネストされた 2 つのループを含む次の XSLT テンプレートを思いつきました

<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

問題は、最初のキーと値のペアが重複していることです。

4

1 に答える 1