Selección y filtrado en XQuery

Documento de ejemplo XML

En los siguientes ejemplos, continuaremos utilizando el documento "books.xml" (el mismo que se utilizó en el capítulo anterior).

Vea el archivo "books.xml" en su navegador

Selección y filtrado de elementos

Como se vio en el capítulo anterior, utilizamos expresiones de ruta o expresiones FLWOR para seleccionar y filtrar elementos.

Vea la expresión FLWOR a continuación:

for $x in doc("books.xml")/bookstore/book
donde $x/precio>30
ordenar por $x/título
return $x/title
for
(opcional) Enlazar una variable a cada elemento devuelto por una expresión in
let
(opcional)
donde
(opcional) Establecer una condición
ordenar por
(opcional) Establecer el orden de los resultados
devolver
especificar el contenido que se devuelve en los resultados

declaración for

La declaración for puede enlazar una variable a cada elemento devuelto por una expresión in. La declaración for puede generar iteraciones. Puede existir múltiples declaraciones for en una expresión FLWOR.

Si desea realizar un bucle específico de次数 en una declaración for, puede usarpalabra clave para

para $x en (1 para 5)
return <test>{$x}</test>

Resultados:

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

Palabra clave at Se puede utilizar para calcular iteraciones:

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

Resultados:

<book>1. Italiano cotidiano</book>
<book>2. Harry Potter</book>
<book>3. XQuery Kick Start</book>
<book>4. Aprender XML</book>

De la misma manera en la declaración forPermite múltiples expresiones in. Utilice comas para separar cada expresión in.

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

Resultados:

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

Declaración let

La declaración let puede realizar asignaciones de variables y evitar la repetición multiple de expresiones idénticas. La declaración let no causará iteración.

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

Resultados:

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

Declaración where

La declaración where se utiliza para establecer una o más condiciones (criterios) para los resultados.

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

Declaración order by

La declaración order by se utiliza para especificar el orden de los resultados. Aquí, queremos ordenar los resultados según category y title:

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

Resultados:

<title lang="en">Harry Potter</title>
<title lang="es">Italiano cotidiano</title>
<title lang="en">Learning XML</title>
<title lang="en">XQuery Kick Start</title>

Declaración return:

La declaración return especifica el contenido que se debe retornar.

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

Resultados:

<title lang="es">Italiano cotidiano</title>
<title lang="en">Harry Potter</title>
<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>