Obtaining a Union

Specify the | operator to combine collection sets. For example, the following query returns all last-name elements and all first-name elements in the current context:

first-name | last-name 
               

            

The result set can contain zero or more of each element that the | operator applies to. For example, using the previous query, it is possible for the query to contain only first-name elements if no last-name elements are found. The following query finds all book elements and magazine elements in the bookstore element:

/bookstore/book | /bookstore/magazine 
               

            

The next query finds all books and all authors in the current context:

book | book/author 
               

            

The next query returns the first names, last names, and degrees of authors of books or magazines in the current context:

((book | magazine)/author/first-name) | 
               
(book | magazine)/author/last-name | 
               
(book | magazine)/author/degree) )
               

            

A union can appear only as the first step in a location path expression. Consequently, the following is incorrect because there is a union specification that is not in the first step of a location path expression.

(book | magazine)/author/(first-name | last-name | degree)
               

            

The following query finds all books for which the author's first name is Bob and all magazines with prices less than 10 dollars:

/bookstore/book[author/first-name = "Bob"] | magazine[price < 10] 
               

            

 
Free Stylus Studio XML Training: