Výběr a filtrování XQuery
Vzorový dokument XML
V příkladech níže použijeme dokument „books.xml“ (stejný soubor XML jako v předchozích kapitolách).
Zobrazte soubor „books.xml“ ve svém prohlížeči .
Výběr a filtrování prvků
Jak jsme viděli v předchozích kapitolách, vybíráme a filtrujeme prvky buď pomocí výrazu Path, nebo pomocí výrazu FLWOR.
Podívejte se na následující výraz FLWOR:
for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
- for - (volitelné) váže proměnnou ke každé položce vrácené výrazem in
- nechat - (volitelné)
- kde - (nepovinné) specifikuje kritéria
- order by - (volitelné) určuje pořadí řazení výsledku
- return - určuje, co se má ve výsledku vrátit
Klauzule for
Klauzule for váže proměnnou ke každé položce vrácené výrazem in. Výsledkem klauzule for je iterace. Ve stejném výrazu FLWOR může být více klauzulí.
Chcete-li v klauzuli for opakovat určitý počet opakování, můžete použít klíčové slovo to :
for $x in (1 to 5)
return <test>{$x}</test>
Výsledek:
<test>1</test>
<test>2</test>
<test>3</test>
<test>4</test>
<test>5</test>
Klíčové slovo at lze použít k počítání iterace:
for $x at $i in doc("books.xml")/bookstore/book/title
return <book>{$i}. {data($x)}</book>
Výsledek:
<book>1. Everyday Italian</book>
<book>2. Harry Potter</book>
<book>3. XQuery Kick Start</book>
<book>4. Learning XML</book>
Je také povoleno s více než jedním výrazem v klauzuli for. K oddělení každého ve výrazu použijte čárku:
for $x in (10,20), $y in (100,200)
return <test>x={$x} and y={$y}</test>
Výsledek:
<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>
Letová klauzule
Klauzule let umožňuje přiřazení proměnných a zamezuje opakovanému opakování stejného výrazu. Klauzule let nevede k iteraci.
let $x := (1 to 5)
return <test>{$x}</test>
Výsledek:
<test>1 2 3 4 5</test>
Klauzule kde
Klauzule where se používá k určení jednoho nebo více kritérií pro výsledek:
where $x/price>30 and $x/price<100
Pořadí podle klauzule
Pořadí podle klauzule se používá k určení pořadí řazení výsledku. Zde chceme seřadit výsledek podle kategorie a titulu:
for $x in doc("books.xml")/bookstore/book
order by $x/@category, $x/title
return $x/title
Výsledek:
<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>
Ustanovení o návratu
Klauzule návratu určuje, co má být vráceno.
for $x in doc("books.xml")/bookstore/book
return $x/title
Výsledek:
<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>