Exemple XQuery
Apprenons quelques XQuery de base en regardant un exemple.
L'exemple de document XML
Nous utiliserons le document XML suivant dans les exemples ci-dessous.
"livres.xml":
<?xml version="1.0" encoding="UTF-8"?>
<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>
Affichez le fichier "books.xml" dans votre navigateur .
Comment sélectionner des nœuds à partir de "books.xml" ?
Les fonctions
XQuery utilise des fonctions pour extraire des données de documents XML.
La fonction doc() permet d'ouvrir le fichier "books.xml":
doc("books.xml")
Expressions de chemin
XQuery utilise des expressions de chemin pour parcourir les éléments d'un document XML.
L'expression de chemin suivante est utilisée pour sélectionner tous les éléments de titre dans le fichier « books.xml » :
doc("books.xml")/bookstore/book/title
(/bookstore sélectionne l'élément bookstore, /book sélectionne tous les éléments book sous l'élément bookstore et /title sélectionne tous les éléments title sous chaque élément book)
Le XQuery ci-dessus extraira les éléments suivants :
<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>
Prédicats
XQuery utilise des prédicats pour limiter les données extraites des documents XML.
Le prédicat suivant est utilisé pour sélectionner tous les éléments book sous l'élément bookstore qui ont un élément price avec une valeur inférieure à 30 :
doc("books.xml")/bookstore/book[price<30]
Le XQuery ci-dessus extraira les éléments suivants :
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>