次のような XSLT 1.0 コードがあります。
<xsl:key name="enemyItems"
match="metadata[attributes/metadata_key/@value = 'enemylist']"
use="attributes/metadata_refkey/@value"/>
<xsl:template match="item">
<xsl:variable name="enemyList"
select="key('enemyItems', @key)/attributes/@value"/>
<xsl:if test="string-length($enemyList) > 0">
<xsl:value-of select="@name"/>
</xsl:if>
</xsl:template>
私が理解しているように、キーは特定の要素に対して複数の値を格納できます。上記のコードは、 を参照するときに最初の値しか取得していないと思いますkey('enemyItems', @key)
。
だから、私はこのように、xsl:for-each でそのコードをラップしたい
<xsl:template match="item">
<xsl:for-each select="key('enemyItems', @key)">
<xsl:variable name="enemyList"
select="???/attributes/@value"/>
<xsl:if test="string-length($enemyList) > 0">
<xsl:value-of select="@name"/>
</xsl:if>
</xsl:for-each>
</xsl:template>
私の質問は: ??? には何が入りますか? 部?(つまり、反復変数またはものの名前は何ですか?)