XQuery XPath
XQuery uses XPath expressions to restrict the search results on XML collections.
Let's see an example.
Examples
Consider the following example that contains information about a bookstore.
books.xml
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="web">
<title lang="en">XQuery Tips</title>
<author>Tom Nolan</author>
<year>2022</year>
<price>39.99</price>
</book>
<book category="web">
<title lang="en">Learn XML</title>
<author>Tutorial Reference</author>
<year>2022</year>
<price>9.99</price>
</book>
</bookstore>
We have given here three versions of an XQuery statement that satisfy the same goal of displaying the titles of books that have a price value of less than 30.
1. Read the entire XML document
The following XQuery document contains the query expression to be executed:
books_ex1.xqy
let $books := doc("books.xml")
for $x in $books/bookstore/book
where $x/price < 30
return $x/title
The result is as follows:
<title lang="en">Harry Potter</title>
<title lang="en">Learn .Net in 24 hours</title>
The result is as follows:
2. Read all the books
The following XQuery document contains the query expression to be executed:
books_ex2.xqy
let $books := doc("books.xml")/bookstore/book
for $x in $books
where $x/price < 30
return $x/title
The result is as follows:
<title lang="en">Harry Potter</title>
<title lang="en">Learn .Net in 24 hours</title>
3. Read books with price lower than 30
The following XQuery document contains the query expression to be executed:
books_ex3.xqy
let $books := doc("books.xml")/bookstore/book[price < 30]
for $x in $books
return $x/title
The result is as follows:
<title lang="en">Harry Potter</title>
<title lang="en">Learn .Net in 24 hours</title>