s表示当前节点,即使当前节点不是上下文节点:是的,这就是我的意思。这就是为什么我说“XSLT上下文节点”,而不是“XPath上下文节点”。我想避免说“当前()函数,总是指当前节点”,因为这听起来很傻,解释不了很多。酷(您在第一个示例中缺少了一个]但这就是我

s表示当前节点,即使当前节点不是上下文节点:是的,这就是我的意思。这就是为什么我说“XSLT上下文节点”,而不是“XPath上下文节点”。我想避免说“当前()函数,总是指当前节点”,因为这听起来很傻,解释不了很多。酷(您在第一个示例中缺少了一个]但这就是我,xslt,xpath,umbraco,Xslt,Xpath,Umbraco,s表示当前节点,即使当前节点不是上下文节点:是的,这就是我的意思。这就是为什么我说“XSLT上下文节点”,而不是“XPath上下文节点”。我想避免说“当前()函数,总是指当前节点”,因为这听起来很傻,解释不了很多。酷(您在第一个示例中缺少了一个]但这就是我的问题的答案。使用键标记是提高性能还是仅仅提高可读性?两者都有。它提高了性能,因为它创建了关联数组,而且更短。 <xsl:variable name="currentID" select="@id" /> <xsl:attri


s表示当前节点,即使当前节点不是上下文节点:是的,这就是我的意思。这就是为什么我说“XSLT上下文节点”,而不是“XPath上下文节点”。我想避免说“当前()函数,总是指当前节点”,因为这听起来很傻,解释不了很多。酷(您在第一个示例中缺少了一个]但这就是我的问题的答案。使用键标记是提高性能还是仅仅提高可读性?两者都有。它提高了性能,因为它创建了关联数组,而且更短。
<xsl:variable name="currentID" select="@id" />
<xsl:attribute name="class">
<xsl:if test="count($currentPage/ancestor::node [@id = $currentID])&gt;0">descendant-selected </xsl:if>
</xsl:attribute>
<xsl:if test="count($currentPage[ancestor::node/@id = @id])&gt;0">descendant-selected </xsl:if>
<xsl:if test="@id = $currentPage/ancestor::node/@id">descendant-selected </xsl:if>
<xsl:if test="count($currentPage/ancestor::node [@id = current()/@id])&gt;0">
<xsl:variable name="currentID" select="@id" />
<xsl:attribute name="class">
  <xsl:if test="count($currentPage/ancestor::node[@id = current()/@id]) &gt; 0]">
    <xsl:text>descendant-selected </xsl:text>
  </xsl:if>
</xsl:attribute>
<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>