XQuery auswählen und filtern

XML-Beispiel-Dokument

Wir werden im folgenden Beispiel diesen "books.xml"-Dokument (und das XML-Dokument, das in den obigen Kapiteln verwendet wurde) fortsetzen.

Sehen Sie "books.xml" in Ihrem Browser an.

Auswahl und Filterung von Elementen

Wie in den vorherigen Kapiteln gezeigt, verwenden wir Pfadausdrücke oder FLWOR-Ausdrücke, um Elemente auszuwählen und zu filtern.

Sehen Sie sich das folgende FLWOR-Ausdruck an:

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
for
(optional) Binden Sie eine Variable an jedes Element, das von einem in-Ausdruck zurückgegeben wird
let
(optional)
where
(optional) Bestimmen Sie eine Bedingung
order by
(optional) Bestimmen Sie die Reihenfolge der Ergebnisse
return
bestimmt den Inhalt, der in den Ergebnissen zurückgegeben wird

for-Anweisung

Die for-Anweisung kann Variablen an jedes Element binden, das von einem in-Ausdruck zurückgegeben wird. Die for-Anweisung kann Iterationen erzeugen. Mehrere for-Anweisungen können in derselben FLWOR-Ausdrucksform existieren.

Um eine bestimmte Anzahl von Iterationen in einer for-Anweisung durchzuführen, können Sie:Schlüsselwort bis :

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

Ergebnis:

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

Schlüsselwort bei Kann für die Berechnung von Iterationen verwendet werden:

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

Ergebnis:

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

Das gilt ebenfalls für die for-AnweisungEs sind mehrere in-Ausdrücke erlaubtVerwenden Sie Kommas, um jede in-Ausdrucksform zu trennen:

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

Ergebnis:

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

let-Anweisung

Die let-Anweisung kann Variablen zuweisen und das mehrfache Wiederholen gleicher Ausdrücke vermeiden. Die let-Anweisung führt keine Iteration durch.

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

Ergebnis:

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

where-Anweisung

Die where-Anweisung wird verwendet, um eine oder mehrere Bedingungen (Kriterien) für die Ergebnisse festzulegen.

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

order by-Anweisung

Die order by-Anweisung wird verwendet, um die Reihenfolge der Ergebnisse zu bestimmen. Hier möchten wir die Ergebnisse nach category und title sortieren:

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

Ergebnis:

<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>

return-Anweisung:

Die return-Anweisung legt das zu returnierende Inhalt fest.

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

Ergebnis:

<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>