1

在 xPath 中,如果有 sequence1 = sequence2,则如果在 sequence1 中至少有一个元素也在 sequence2 中,则返回 true。我需要一些东西来测试sequence1 的所有元素是否存在于sequence2 中(sequence1 的值集是sequence2 中值集的子集)。

这可行吗?

4

3 回答 3

1

这应该在 XPath 1.0 中工作:

not($sequence1[not(. = $sequence2)])
于 2013-03-08T19:22:56.553 回答
1

使用双重否定定律

not($seq1[not(. = $seq2)])

或者,更有效 - 对于节点序列和基于节点身份的相等语义: (O(N) vs O(N^2))

count($seq1 | $seq2) = count($seq2)

二、XPath 2.0

对于节点序列(基于节点身份的相等语义)

not($seq1 except $seq2)

以及值序列的有效表达式

count(distinct-values(($seq1, $seq2))) eq count(distinct-values($seq2))
于 2013-03-09T16:00:23.037 回答
0

您可以使用every 检查每个元素是否在sequence2

every $x in $sequence1 satisfies $x = $sequence2
于 2013-03-08T18:33:20.427 回答