Ultimele tutoriale de dezvoltare web
 

XQuery Selectarea și filtrare


Exemplu Documentul XML

Vom folosi "books.xml" documentul în exemplele de mai jos (same XML file as in the previous chapters) și (same XML file as in the previous chapters) .

Vezi "books.xml" fișierul în browser .


Selectarea și Elemente de filtrare

Așa cum am văzut în capitolele anterioare, suntem selectarea și elemente cu fie o expresie Path sau cu o expresie FLWOR filtrare.

Uita-te la următoarea expresie FLWOR:

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
  • pentru - (optional) leagă o variabilă pentru fiecare element returnat de expresie în
  • lasa - (optional)
  • în cazul în care - (optional) specifică un criteriu
  • comanda - (optional) specifică ordinea de sortare-rezultatului
  • întoarcere - specifică ce să se întoarcă în rezultatul

Clauza FOR

Clauza FOR leagă o variabilă pentru fiecare element returnat de la expresie. Rezultate pentru clauză din iterație. Pot exista mai multe clauze în aceeași expresie FLWOR.

Pentru a bucla un anumit număr de ori într - o clauză pentru, puteți să folosiți to a cuvintelor cheie:

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

Rezultat:

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

at cuvânt cheie poate fi folosit pentru a număra repetare:

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

Rezultat:

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

De asemenea, este permisă cu mai mult de unul din expresia în clauza. Utilizați virgula pentru a separa fiecare expresie în:

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

Rezultat:

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

Clauza lit.

Clauza let permite sarcini variabile și se evită repetarea aceeași expresie de multe ori. Clauza să nu are ca rezultat iterație.

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

Rezultat:

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

Clauza WHERE

Clauza în cazul în care este utilizată pentru a specifica unul sau mai multe criterii pentru rezultatul:

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

Ordinea de Clauza

Ordinea de clauza este folosita pentru a specifica ordinea de sortare a rezultatului. Aici vrem să comandați rezultatul pe categorii și titlul:

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

Rezultat:

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

Clauza de retur

Clauza de returnare specifică ce urmează a fi returnat.

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

Rezultat:

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