Я видел в SO и других местах, что должно работать следующее (этот пример снят непосредственно из Cookbook от O'Reilly XSLT):
(: intersection :)
$set1[count(. | $set2) = count($set2)]
(: difference :)
$set1[count(. | $set2) != count($set2)]
и похоже, что все должно быть ОК, однако это, похоже, терпит неудачу при использовании с реальными путями, а не с переменными. Например, учитывая следующий документ
<a>
<new>
<val>1</val>
<val>2</val>
</new>
<old>
<val>2</val>
<val>3</val>
</old>
</a>
и выражение XPath /a/new/val[count(. | /a/old/val)=count(/a/old/val)]/text()
Я ожидаю получить node -set { 2 }
, но вместо этого получаю { 1 2 }
. Любые идеи, что я делаю неправильно?