XPath中的子集

时间:2013-03-08 18:24:11

标签: xpath sequence schematron

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

这可行吗?

3 个答案:

答案 0 :(得分:1)

这应该在XPath 1.0中起作用:

not($sequence1[not(. = $sequence2)])

答案 1 :(得分:1)

使用double negation law

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

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

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

<强> II。 XPath 2.0

对于一系列节点(基于节点标识的相等语义)

not($seq1 except $seq2)

和值序列的有效表达式

count(distinct-values(($seq1, $seq2))) eq count(distinct-values($seq2))

答案 2 :(得分:0)

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

every $x in $sequence1 satisfies $x = $sequence2