$currentID
コンテキスト ノードからを選択したため、次のようになります。
<xsl:variable name="currentID" select="@id" />
current()
常に XSLT コンテキスト ノードを参照する関数を使用できます。
<xsl:attribute name="class">
<xsl:if test="count($currentPage/ancestor::node[@id = current()/@id]) > 0]">
<xsl:text>descendant-selected </xsl:text>
</xsl:if>
</xsl:attribute>
この方法では、変数は必要ありません。
その他の注意事項:
<xsl:text>
上記のように使用することをお勧めします。これにより、コードをより自由にフォーマットし、過度に長い行を避けることができます。
- を実行する必要はありません
count() > 0
。単にノードを選択するだけで十分です。存在しない場合は、空のノード セットが返されます。これは常に false と評価されますが、空でないノードセットは常に true と評価されます。
@id
XSL スタイルシートで定期的にノードを参照する場合は、次のようにすると便利です<xsl:key>
。
<xsl:key name="kNodeById" match="node" use="@id" />
<!-- ... -->
<xsl:attribute name="class">
<xsl:if test="key('kNodeById', @id)">
<xsl:text>descendant-selected </xsl:text>
</xsl:if>
</xsl:attribute>
current()
XPath述語の外側では、コンテキストは変更されないため、上記は必要ありません。count()
また、これは冗長であるため(説明どおり)、ノードは使用しません。