Books.xml:
ABC Author Name 2020 100.00 XQuery Book Author 1 Author 2 2005 300.00 Ecosystem Author Name 2010 250.00 Current Affairs Author Name 2004 500.00 Science Book Author 1 Author 2 Author 3 2011 150.00
Selecting and Filtering Elements:
Using either a Path expression or with a FLWOR expression, we can select and filter the elements.
Example:
for $x in doc("books.xml")/bookstore/book where $x/price>300 order by $x/title return $x/title
Explanation:
The above FLWOR expression includes:
- for: It is used to bind a variable to each item returned by the in expression. It is optional.
- let: It is optional.
- where: It is used to specify criteria. It is optional.
- order by: It is used to specify the sort order of the result. It is optional.
- return: It is used to specify what to return in the result.
The for Clause:
To bind a variable to each item returned by the in expression, the for clause is used. This clause results in an iteration and we may use the to keyword to loop a specific number of times in a for clause. In a single FLWOR expression, multiple for clauses can be used.
Example 1:
for $x in (5 to 9) return{$x}
Result:
5 6 7 8 9
Example 2:
for $x at $i in doc("books.xml")/bookstore/book/title return{$i}. {data($x)}
Explanation:
In the above example, we are using the at keyword to count the iteration.
Result:
1. ABC 2. XQuery Book 3. Sociology 1 4. Current Affairs 5. Science Book
Example 3:
for $x in (1,2), $y in (10,20) returnx={$x} and y={$y}
Explanation:
In the above example, we are using multiple “in” expression in the for clause. We are separating each “in” in the expression with a comma.
Result:
x=1 and y=10 x=1 and y=20 x=2 and y=10 x=2 and y=20
The let Clause:
To allow the variable assignments, the let clause is used. It helps in avoiding the repeating of the same expression multiple times. It also does not result in an iteration.
Example:
let $x := (5 to 9) return{$x}
Result:
5 6 7 8 9
The where Clause:
To specify one or more criteria for the result, the where clause is used.
Example:
where $x/price>200 and $x/price<400
The order by Clause:
To specify the sort order of the result, the order by clause is used.
Example:
for $x in doc("books.xml")/bookstore/book order by $x/@category, $x/title return $x/title
Explanation:
In the above example, we are ordering the result by category and title.
Result:
ABC XQuery Book Current Affairs Ecosystem Science Book
The return Clause:
To specify what is to be returned, the return clause is used.
Example:
for $x in doc("books.xml")/bookstore/book return $x/title
Result:
ABC XQuery Book Ecosystem Current Affairs Science Book