XQuery Auswahl und Filterung

XML-Beispiel-Dokument

Wir werden im folgenden Beispiel diesen "books.xml"-Dokument (und den XML-Dokument, der im vorherigen Kapitel verwendet wurde) weiterverwenden.

Sehen Sie "books.xml" im Browser an.

Auswahl und Filterung von Elementen

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

Sehen Sie sich den folgenden FLWOR-Ausdruck an:

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

for-Satz

Ein for-Satz kann Variablen an jedes Element binden, das von einem in-Ausdruck zurückgegeben wird. Ein for-Satz kann Iterationen erzeugen. Es können mehrere for-Sätze in derselben FLWOR-Ausdrucksform existieren.

Um eine spezifische Anzahl von Malen in einem for-Satz zu wiederholen, können SieSchlüsselwort zu

für $x in (1 zu 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 zur 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 auch für die for-AnweisungEs sind mehrere in-Ausdrücke erlaubt. Verwenden Sie Kommas, um jeden in-Ausdruck zu trennen:

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

Ergebnis:

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

let-Anweisung

Die let-Anweisung kann Variablen zuweisen und das Wiederkommen gleicher Ausdrücke mehrmals 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 sollen die Ergebnisse nach category und title sortiert werden:

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="de">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="de">Everyday Italian</title>
<title lang="en">Harry Potter</title>
<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>