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.