XPath/SQL 等效
-XPath 无法执行类似联接的查询,但可以执行类似 SQL 的并集、交集、子集和差集
-XPath 使用联合操作和计数函数的变体支持类似 SQL 的集合操作
a UNION b: $a | $b
b UNION c: $b | $c
a INTERSECTION b: $a[count(.|$b) = count($b)]
a INTERSECTION c: $a[count(.|$c) = count($c)]
(交集取 $b 与 $a 中任何节点的并集,并返回 $a 中也存在于 $b 中的节点集)
a DIFFERENCE b: $a[count(.|$b) != count($b)] | $b[count(.|$a) != count($a)]
a DIFFERENCE c: $a[count(.|$c) != count($c)] | $c[count(.|$a) != count($a)]
(差集取 $a 与 $b 或 $c 差集的并集,并返回 $a 相对于 $b 或 $c 独有的节点集)
a SYM DIFFERENCE b: $a[count(. | $b) != count($b)] | $b[count(. | $a) != count($a)]
(对称差集取两边差集的并集,并返回 $a 和 $b 独有的节点集)
a SUBSET OF b: count($b | $a) = count($b) and count($b) > count($a)
b SUBSET OF a: count($b | $a) = count($a) and count($a) > count($b)
(子集表示 $a 与 $b 的并集返回相同的节点集,并且 $a 或 $b 较大)
XPath 可以嵌入到 xpointer 中以创建智能 URL