XQuery - Première application
Exemple
Voici un exemple de document XML contenant les enregistrements d'une librairie de divers livres.
books.xml
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book category="JAVA">
<title lang="en">Learn Java in 24 Hours</title>
<author>Robert</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="DOTNET">
<title lang="en">Learn .Net in 24 hours</title>
<author>Peter</author>
<year>2011</year>
<price>70.50</price>
</book>
<book category="XML">
<title lang="en">Learn XQuery in 24 hours</title>
<author>Robert</author>
<author>Peter</author>
<year>2013</year>
<price>50.00</price>
</book>
<book category="XML">
<title lang="en">Learn XPath in 24 hours</title>
<author>Jay Ban</author>
<year>2010</year>
<price>16.50</price>
</book>
</books>
Voici un exemple de document Xquery contenant l'expression de requête à exécuter sur le document XML ci-dessus. Le but est d'obtenir les éléments de titre de ces nœuds XML dont le prix est supérieur à 30.
books.xqy
for $x in doc("books.xml")/books/book
where $x/price>30
return $x/title
Résultat
<title lang="en">Learn .Net in 24 hours</title>
<title lang="en">Learn XQuery in 24 hours</title>
Vérifier le résultat
Pour vérifier le résultat, remplacez le contenu de books.xqy (indiqué dans le chapitre Configuration de l' environnement ) par l'expression XQuery ci-dessus et exécutez le programme java XQueryTester.
Expressions XQuery
Comprenons chaque élément de l'expression XQuery ci-dessus.
Utilisation des fonctions
doc("books.xml")
doc () est l'une des fonctions XQuery utilisées pour localiser la source XML. Ici, nous avons passé "books.xml". Compte tenu du chemin relatif, books.xml doit se trouver dans le même chemin où books.xqy est présent.
Utilisation d'expressions XPath
doc("books.xml")/books/book
XQuery utilise fortement les expressions XPath pour localiser la partie requise de XML sur laquelle la recherche doit être effectuée. Ici, nous avons choisi tous les nœuds de livre disponibles sous le nœud de livres.
Itérer les objets
for $x in doc("books.xml")/books/book
XQuery traite les données XML comme des objets. Dans l'exemple ci-dessus, $ x représente le nœud sélectionné, tandis que la boucle for itère sur la collection de nœuds.
Appliquer la condition
where $x/price>30
Comme $ x représente le nœud sélectionné, "/" est utilisé pour obtenir la valeur de l'élément requis; La clause "where" est utilisée pour mettre une condition sur les résultats de la recherche.
Renvoyer le résultat
return $x/title
Comme $ x représente le nœud sélectionné, "/" est utilisé pour obtenir la valeur de l'élément requis, prix, titre; La clause "return" est utilisée pour renvoyer les éléments des résultats de la recherche.