在 xPath 中,如果有 sequence1 = sequence2,则如果在 sequence1 中至少有一个元素也在 sequence2 中,则返回 true。我需要一些东西来测试sequence1 的所有元素是否存在于sequence2 中(sequence1 的值集是sequence2 中值集的子集)。
这可行吗?
在 xPath 中,如果有 sequence1 = sequence2,则如果在 sequence1 中至少有一个元素也在 sequence2 中,则返回 true。我需要一些东西来测试sequence1 的所有元素是否存在于sequence2 中(sequence1 的值集是sequence2 中值集的子集)。
这可行吗?
这应该在 XPath 1.0 中工作:
not($sequence1[not(. = $sequence2)])
使用双重否定定律:
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))
您可以使用every 检查每个元素是否在sequence2
every $x in $sequence1 satisfies $x = $sequence2