XQuery Voorbeelden

In this section, let's learn some basic XQuery syntax by studying an example.

XML instance document

We will use this XML document in the following examples.

"books.xml" :

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book category="COOKING">
  <title lang="en">Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>
<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 Kick Start</title>
  <author>James McGovern</author>
  <author>Per Bothner</author>
  <author>Kurt Cagle</author>
  <author>James Linn</author>
  <author>Vaidyanathan Nagarajan</author>
  <year>2003</year>
  <price>49.99</price>
</book>
<book category="WEB">
  <title lang="en">Learning XML</title>
  <author>Erik T. Ray</author>
  <year>2003</year>
  <price>39.95</price>
</book>
</bookstore>

View the 'books.xml' file in your browser.

How to select nodes from 'books.xml'?

Functions

XQuery uses functions to extract data from an XML document.

doc() is used to open the 'books.xml' file:

doc("books.xml")

Path expressions

XQuery uses path expressions to navigate through elements in an XML document.

The following path expression is used to select all 'title' elements in the 'books.xml' file:

doc("books.xml")/bookstore/book/title

(Select the 'bookstore' element with /bookstore, select all 'book' elements under the 'bookstore' element with /book, and select all 'title' elements under each 'book' element with /title)

De bovenstaande XQuery kan de volgende gegevens extraheren:

<title lang="en">Everyday Italian</title>
<title lang="en">Harry Potter</title>
<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>

Predicaat

XQuery gebruikt predicaten om de gegevens te beperken die uit een XML-document worden geëxtraheerd.

De volgende predicaat wordt gebruikt om alle book-elementen onder de bookstore-elementen te selecteren, en de waarde van het price-element van de geselecteerde book-elementen moet kleiner zijn dan 30:

doc("books.xml")/bookstore/book[price<30]

De bovenstaande XQuery kan de volgende gegevens extraheren:

<book category="CHILDREN">
  <title lang="en">Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>