确定节点是否包含在XSLT中的另一个节点中

问题描述:

是否可以确定节点是否包含在XSLT中的另一个节点中(或等于)?例如,请考虑以下代码片段:确定节点是否包含在XSLT中的另一个节点中

<xsl:variable name="itemSection" select=".."/> 
<xsl:for-each select="key('enemyItems', @key)"> 
    <xsl:variable name="enemyList" select="./attributes/@value"/> 
    <xsl:variable name="enemyListSection" select="../../.."/> 
         . 
         . 
         . 
</xsl:for-each> 

是否可以告诉itemSection是否包含在(或等于)enemyListSection?

+0

检查Dimitre正确答案。我错过了“(或等于)”部分。 – 2010-07-30 17:56:43

在XPath 1.0

$itemSection[ancestor::*[generate-id()=generate-id($enemyListSection)]] 

在XPath 2.0

$itemSection[ancestor::*[. is $enemyListSection]] 
+0

请参阅我对答案的正确性所做的小贡献。 :) – 2010-07-30 17:44:35

只是一个小调整,亚历杭德罗的回答

在XPath 1.0

$itemSection[ancestor-or-self::*[generate-id()=generate-id($enemyListSection)]] 

在XPath 2.0

$itemSection[ancestor-or-self::*[. is $enemyListSection]] 

因为原来的问题问:

是否可以告诉 itemSection是否包含在(或 等于)enemyListSection?

+0

我错过了重要的“(或等于)”。你的答案是正确的。 – 2010-07-30 17:55:11