XPath/SQL Equivalents
SQL Equivalents
edit-XPath cannot do join-like queries, but can do union, intersection, subset, and difference like SQL
-XPath supports set operations like SQL using variations of the Union operation and the count function:
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)]
(Intersection takes the union of $b with any node in $a and returns the set of nodes in $a that are also in $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)]
(Difference takes the union of the differences of $a with $b or $c and returns the set of nodes unique to $a versus $b or $c)
a SYM DIFFERENCE b: $a[count(. | $b) != count($b)] | $b[count(. | $a) != count($a)]
(Symmetrical difference takes the union of the differences from both sides and returns the set of nodes unique to both $a and $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)
(Subset means that the union of $a with $b returns the same set of nodes and either $a or $b is larger)
XPath can be embedded in an xpointer to make a smart url: