Voorbeeld van XQuery

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

XML example document

We will use this XML document in the following example.

"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>

Bekijk het bestand "books.xml" in uw browser.

Hoe kan je knopen selecteren uit "books.xml"?

Functie

XQuery gebruikt functies om gegevens uit een XML-document te extraheren.

doc() wordt gebruikt om het bestand "books.xml" te openen:

doc("books.xml")

Padexpressie

XQuery gebruikt padexpressies om door elementen in een XML-document te navigeren.

De volgende padexpressie wordt gebruikt om alle title-elementen in het bestand "books.xml" te kiezen:

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

(/bookstore selecteert het bookstore-element, /book selecteert alle book-elementen onder het bookstore-element, en /title selecteert alle title-elementen onder elk book-element)

De bovenstaande XQuery kan de volgende gegevens ophalen:

<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 predicaten worden gebruikt om alle book-elementen onder de bookstore-elementen te kiezen, en de waarde van het price-element van de geselecteerde book-elementen moet kleiner zijn dan 30:

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

De bovenstaande XQuery kan de volgende gegevens ophalen:

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