Selección y filtrado en XQuery

Documento de ejemplo de XML

Vamos a continuar utilizando el documento "books.xml" en los siguientes ejemplos (el mismo archivo XML que se utilizó en los capítulos anteriores).

Mira el archivo "books.xml" en tu navegador.

Selección y filtrado de elementos

Como se vio en los capítulos anteriores, usamos expresiones de ruta o expresiones FLWOR para seleccionar y filtrar elementos.

Mira la expresión FLWOR a continuación:

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
for
(opcional) Enlazar una variable a cada elemento devuelto por una expresión in
let
(opcional)
where
(opcional) Establecer una condición
order by
(opcional) Establecer el orden de los resultados
return
especifica el contenido que se devuelve en los resultados

instrucción for

la instrucción for puede unir variables a cada elemento devuelto por una expresión in. La instrucción for puede generar iteraciones. Puede haber múltiples instrucciones for en una expresión FLWOR.

para hacer bucles específicos de número en una instrucción for, puedes usar:palabra clave a :

for $x in (1 a 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 usar para calcular iteraciones:

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

Resultados:

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

lo mismo en la instrucción forpermite múltiples expresiones inuse coma 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>

instrucción let

La declaración let puede realizar asignaciones de variables y evitar la repetición 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í, ordenamos 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="en">Everyday Italian</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 devolver.

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

Resultados:

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