Combining Results
Your query results may consist of several FLWORs or other expressions that each return a result sequence. In addition, the sequences you use in your for and let clauses may be composed from more than one sequence.
There are four ways to combine two or more sequences to form a third sequence. They differ in which items are selected, whether their order is affected, whether duplicates are eliminated, and whether atomic values are allowed in the sequences.
Sequence Constructors
The first way to merge two sequences is simply to create a third sequence that is the concatenation of the first two. This is known as a sequence constructor, and it uses parentheses and commas to concatenate two sequences together. For example:
let $prods := doc("catalog.xml")//product
let $items := doc("order.xml")//item
return ($prods, $items)returns a sequence that is the concatenation of two other sequences, $prods and $items. The items in $prods are first in the sequence, then the items in $items, in the order they appear in that sequence. No attempt is made to eliminate duplicates or sort the items in any way.
Note that concatenation is the only way to combine sequences that contain atomic values; union, intersect, and except work on sequences that contain nodes only.
The union Expression
Another approach to combining sequences of nodes is via a union expression, which is indicated by the keyword union or the vertical bar character (|). The two operators have the exact same meaning. ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access