XQuery - Prima applicazione
Esempio
Di seguito è riportato un documento XML di esempio contenente i record di una libreria di vari libri.
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>
Di seguito è riportato un documento Xquery di esempio contenente l'espressione di query da eseguire sul documento XML precedente. Lo scopo è ottenere gli elementi del titolo di quei nodi XML in cui il prezzo è maggiore di 30.
books.xqy
for $x in doc("books.xml")/books/book where $x/price>30
return $x/title
Risultato
<title lang="en">Learn .Net in 24 hours</title>
<title lang="en">Learn XQuery in 24 hours</title>
Verifica risultato
Per verificare il risultato, sostituire il contenuto di books.xqy (fornito nel capitolo Configurazione dell'ambiente ) con l'espressione XQuery sopra ed eseguire il programma java XQueryTester.
Espressioni XQuery
Cerchiamo di capire ogni parte dell'espressione XQuery sopra.
Uso delle funzioni
doc("books.xml")
doc () è una delle funzioni XQuery utilizzata per individuare l'origine XML. Qui abbiamo passato "books.xml". Considerando il percorso relativo, books.xml dovrebbe trovarsi nello stesso percorso in cui è presente books.xqy.
Uso di espressioni XPath
doc("books.xml")/books/book
XQuery utilizza pesantemente le espressioni XPath per individuare la parte richiesta di XML su cui eseguire la ricerca. Qui abbiamo scelto tutti i nodi del libro disponibili nel nodo libri.
Itera gli oggetti
for $x in doc("books.xml")/books/book
XQuery tratta i dati xml come oggetti. Nell'esempio precedente, $ x rappresenta il nodo selezionato, mentre il ciclo for itera sulla raccolta di nodi.
Applica la condizione
where $x/price>30
Poiché $ x rappresenta il nodo selezionato, "/" viene utilizzato per ottenere il valore dell'elemento richiesto; La clausola "where" viene utilizzata per porre una condizione sui risultati della ricerca.
Restituisci il risultato
return $x/title
Poiché $ x rappresenta il nodo selezionato, "/" viene utilizzato per ottenere il valore dell'elemento richiesto, prezzo, titolo; La clausola "return" viene utilizzata per restituire gli elementi dai risultati della ricerca.