我有两个变量,在我的XSLT 1.0模板,每个人拿着一个节点集(使用XPath选择)。我想确定一个变量中设置的节点是否包含在另一个变量中。例如,假设我有一个嵌套节的章节。我想看看$b
包含在$a
:是否XPath的节点集包含另一个
<xsl:variable name="a" select="chapter//section" />
<xsl:variable name="b" select="chapter//section" />
我试图让节点集的交集,看是否$a
是既$a
和$b
共享第一公共元素,但是这是不工作:
<xsl:if test="$a/ancestor-or-self::*[count(.|$b) = count($b/ancestor::*)][1] = $a">
添加一些上下文。我创建了HTML页面与此XSLT的树一个标签式界面,我试图解决的问题是把阶级=“当前”适当的标签。通过测试每个部分,看它是否是片区段的孩子,它得到了类=“电流”等标签将样式看起来好像是在上面。
谢谢您的回答。我为这个问题添加了一些背景,因为我很难解释。如果我只计算节点,在我看来,以下情况会造成混淆,因为每个父节点的子节点数量相同。我误解了吗? A节 A.1节 B节 B.1节 –
Tim
@Tim:你的主要问题是,你没在答案中不要尝试XPath表达式 - 如果你有做到这一点,你不会在评论中提出这样的问题。这个答案中的表达式是测试节点集包含的最直接(也是最短)的方式。你正试图寻找其他方法,他们可能在一种情况下工作,但不在另一种情况下工作 - 这可能不是花时间最有用的方式。欲了解更多信息,请阅读此处:http://www.dpawson.co.uk/xsl/sect2/muench.html#d9944e108。从我+1。 –
@Dimitre,我没有*理解*答案。感谢你和迈克尔,我现在看到'|'是一个联合操作符,我认为它只是一个逻辑“或”。我已经提出了迈克尔的答案并接受了你的答案。我在学。对于我的特殊情况,我认为我的解决方案很好,但这不是我原来的问题的答案。 – Tim