在xPath中,如果有一個序列1 =序列2,如果序列1中至少有一個元素也在序列2中,則返回真。我需要一些東西,它允許我測試sequence1中是否存在sequence1的所有元素(sequence1的值集合是sequence2中的一組值的子集)。XPath中的子集
這可行嗎?
在xPath中,如果有一個序列1 =序列2,如果序列1中至少有一個元素也在序列2中,則返回真。我需要一些東西,它允許我測試sequence1中是否存在sequence1的所有元素(sequence1的值集合是sequence2中的一組值的子集)。XPath中的子集
這可行嗎?
not($seq1[not(. = $seq2)])
另類伊利,和更有效地 - 節點和節點的基於身份的平等語義序列:(VS○○(N)(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))
謝謝!這工作。 – Daniel 2013-03-15 18:45:21
你可以使用檢查一次,如果每個元素都在序列2
every $x in $sequence1 satisfies $x = $sequence2
確實,但效率低下。 – 2013-03-09 16:26:40
@DimitreNovatchev:好吧,查詢優化器的工作將它變成最高效的版本。 – BeniBela 2013-03-09 17:17:10
BeniBela:你真的相信優化器可以用O(N)替換這個O(N^2)表達式嗎? :) – 2013-03-09 19:17:37
這應該XPath 1.0中工作:
not($sequence1[not(. = $sequence2)])
它將做一個具體的例子很好。你在問關於*節點的序列嗎?或者是關於任何序列的問題? 「平等」是如何定義的?它是否具有基於身份的語義,還是具有基於價值的語義? – 2013-03-09 16:14:07
此外,關於「子集」的說法更爲精確。子序列意味着相同的順序,這*不是*你所要求的。 – 2013-03-09 16:29:20