我已经在SO和其他地方看到以下内容应该可以工作(这个例子直接取自O'Reilly的XSLT Cookbook):
(: 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()我希望得到节点集,{ 2 }但我得到了{ 1 2 }.我有什么想法我做错了吗?
节点集交集的公式使用节点标识,而不是值标识.
当且仅当时,两个节点是相同的 count($n1|$n2) =1
但是,您希望基于值标识进行交叉.
方案:
用途:
/a/new/val[. = /a/old/val]
这将选择/a/new/val存在至少一个/a/old/val元素的任何元素,使得这两个元素的字符串值相同.
| 归档时间: | 
 | 
| 查看次数: | 4450 次 | 
| 最近记录: |