Selezione e filtraggio in XQuery

Documento di esempio XML

Utilizzeremo il documento XML "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.

Ecco un esempio di espressione FLWOR:

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 ogni elemento restituito dall'espressione in
let
(opzionale)
where
(opzionale) Definire una condizione
order by
(opzionale) Definire l'ordine di visualizzazione dei risultati
return
Determina il contenuto restituito nel risultato

istruzione for

L'istruzione for lega una variabile a ogni elemento restituito dall'espressione in

Per eseguire un ciclo specificato per numero di volte in un for statement, è possibile utilizzareParola chiave 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. Everyday Italian</book>
<book>2. Harry Potter</book>
<book>3. XQuery Kick Start</book>
<book>4. Learning XML</book>

Anche nel for statementÈ possibile avere più espressioni inUtilizzare la virgola per separare ogni espressione in

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>

istruzione let

La dichiarazione let può completare l'allocazione delle variabili e evitare la ripetizione di espressioni identiche. La dichiarazione let non induce 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 sorting 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="en">Everyday Italian</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="en">Everyday Italian</title>
<title lang="en">Harry Potter</title>
<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>