当前位置: 首页 > 知识库问答 >
问题:

xpath nodeset是否包含另一个

戴嘉珍
2023-03-14

我的XSLT1.0模板中有两个变量,每个变量包含一个节点集(用xpath选择)。我想确定一个变量中的节点集是否包含在另一个变量中的节点集中。例如,假设我有一个包含嵌套部分的章节。我想看看$b是否包含在$a中:

<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">

添加一些上下文。我正在用这个xslt为html页面树创建一个选项卡式界面,我试图解决的问题是将class=“current”放在适当的选项卡上。通过测试每个部分,看看它是否是tab部分的子部分,它会得到class=“current”,因此选项卡的样式将看起来像是在顶部。

共有3个答案

终弘厚
2023-03-14

我用另一种方法解决了这个问题。我测试$b的每个祖先元素,看看它是否与$a具有相同的xml:id:

<xsl:if test="boolean($b/ancestor-or-self::[@xml:id=$a/@xml:id])">

虽然这不是使用交集,但它会告诉$a是否包含$b

井宪
2023-03-14

要详细介绍迈克尔·凯的好答案:

当节点$n属于节点集$ns时?

如果一个节点属于一个节点集,那么该节点与该节点集的并集不会产生更大的节点集——因此该并集中的节点数不能大于(实际上必须等于)原始节点集中的节点数。

要使用XPath表达式来表达:

 count($n | $ns) = count($ns)

现在,同样的逻辑告诉我们,当两个节点集的并集不包含比较大节点集更多的元素时,节点集$ns1就是节点集$ns2的子集:

count($ns1 | $ns2) = count($ns2)

如果我们想测试$ns1是否是$ns2的真实子集:

    count($ns1 | $ns2) = count($ns2)
   and
    count($ns2) > count(ns1)  
谭志用
2023-03-14

我想你可以简单地使用Count($a)=Count($a|$b),如果$b中有任何节点不在$a中,则计数会不同。

 类似资料:
  • 本文向大家介绍检查Java HashSet集合是否包含另一个Collection,包括了检查Java HashSet集合是否包含另一个Collection的使用技巧和注意事项,需要的朋友参考一下 若要检查HashSet是否包含另一个,请使用方法。 设置第一个HashSet 设置第二个HashSet 现在检查 以下是检查Java中的HashSet集合是否包含另一个Collection的示例 示例 以

  • 问题内容: 如何测试一个列表是否包含另一个列表(即它是一个连续的子序列)。假设有一个名为contains的函数: 编辑: 问题答案: 这是我的版本: 正如安德鲁·贾菲(Andrew Jaffe)在他的评论中指出的那样,它返回一个元组(start,end + 1),因为我认为这更像pythonic。它不对任何子列表进行切片,因此应该相当有效。 新手感兴趣的一点是,它使用了for语句上的else子句-

  • 问题内容: 我想为数组中的每个值返回一个布尔值,指示它是否在array中。我猜这应该是一个标准程序,但是我找不到有关如何执行此操作的任何信息。我的尝试如下: 但是,我得到了错误: 我使用的是numpy,因此首选使用numpy或标准Python的解决方案。 问题答案: 我相信您可以使用-

  • 问题内容: 我有两个列表,一个包含 相册,文件对的 列表,另一个仅包含有关一张照片的信息- 相册 (位置0)和 文件 (位置1) 如何查看 照片 列表是否在 照片 列表中?就像字符串一样。 相册 , 文件的 位置无关紧要,因为不会有任何 文件 等于 相册 。 问题答案: 同样喜欢字符串。不仅如此,也是 如此 。也适用于列表中的列表: 对列表的成员资格测试仅迭代列表,并对每个元素使用相等性测试以查看

  • 表的结构是: null 以下是我目前掌握的信息:

  • 问题内容: 具有以下内容的HTML是否有效: 因此,当您提交“ b”时,您只会在内部表单中获得字段。提交“ a”时,您将得到减去“ b”中所有字段的所有字段。 如果不可能,那么针对这种情况有哪些解决方法可用? 问题答案: A. 无效的HTML或XHTML 在正式的W3C XHTML规范的B部分“元素禁止”中指出: 至于较早的[HTML 3.2规范,FORMS元素上的部分指出: “每个表单都必须包含