Selezione e filtraggio XQuery

Documento di esempio XML

Continueremo a utilizzare il documento "books.xml" nei prossimi esempi (lo stesso file XML utilizzato nei capitoli precedenti).

Visualizza "books.xml" nel tuo browser.

Selezione e filtraggio degli elementi

Come visto nei capitoli precedenti, utilizziamo espressioni di percorso o espressioni FLWOR per selezionare e filtrare gli elementi.

Vediamo l'espressione FLWOR di seguito:

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
for
(opzionale) Legare una variabile a ciascun elemento restituito dall'espressione in
let
(opzionale)
where
(opzionale) Definire una condizione
order by
(opzionale) Definire l'ordine di presentazione dei risultati
return
definire il contenuto restituito nel risultato

frase for

La frase for può legare una variabile a ciascun elemento restituito dall'espressione in. La frase for può generare iterazioni. È possibile avere più frasi for nella stessa espressione FLWOR.

Se si desidera eseguire un ciclo specificato numero di volte in una frase for, si può utilizzarekeyword to

for $x in (1 to 5)
return <test>{$x}</test>

Risultato:

<test>1</test>
<test>2</test>
<test>3</test>
<test>4</test>
<test>5</test>

Parola chiave at Può essere utilizzato per calcolare l'iterazione:

for $x at $i in doc("books.xml")/bookstore/book/title
return <book>{$i}. {data($x)}</book>

Risultato:

<book>1. Italian Everyday</book>
<book>2. Harry Potter</book>
<book>3. XQuery Kick Start</book>
<book>4. Learning XML</book>

Anche nella dichiarazione forÈ possibile specificare più espressioni in una lista. Usa la virgola per separare ogni espressione in una lista:

for $x in (10,20), $y in (100,200)
return <test>x={$x} and y={$y}</test>

Risultato:

<test>x=10 and y=100</test>
<test>x=10 and y=200</test>
<test>x=20 and y=100</test>
<test>x=20 and y=200</test>

Dichiarazione let

La dichiarazione let può eseguire l'allocazione di variabili e evitare la ripetizione di espressioni identiche. La dichiarazione let non causa iterazioni.

let $x := (1 to 5)
return <test>{$x}</test>

Risultato:

<test>1 2 3 4 5</test>

Dichiarazione where

La dichiarazione where viene utilizzata per specificare una o più condizioni (criteri) per i risultati.

where $x/price>30 and $x/price<100

Dichiarazione order by

La dichiarazione order by viene utilizzata per specificare l'ordine di sortimento dei risultati. In questo caso, dobbiamo ordinare i risultati in base a category e title:

for $x in doc("books.xml")/bookstore/book
order by $x/@category, $x/title
return $x/title

Risultato:

<title lang="en">Harry Potter</title>
<title lang="it">Italian Everyday</title>
<title lang="en">Learning XML</title>
<title lang="en">XQuery Kick Start</title>

Dichiarazione return:

La dichiarazione return specifica il contenuto da restituire.

for $x in doc("books.xml")/bookstore/book
return $x/title

Risultato:

<title lang="it">Italian Everyday</title>
<title lang="en">Harry Potter</title>
<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>