Los últimos tutoriales de desarrollo web
 

Selección de XQuery y Filtrado


El Ejemplo de documento XML

Vamos a utilizar el "books.xml" documento en los ejemplos siguientes (same XML file as in the previous chapters) .

Ver el "books.xml" archivo en su navegador .


Selección y elementos filtrantes

Como hemos visto en los capítulos anteriores, estamos seleccionando y filtrando elementos, ya sea con una expresión de ruta o con una expresión FLWOR.

Mira la siguiente expresión FLWOR:

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
  • para - (optional) se une a una variable a cada artículo devuelto por el en la expresión
  • dejar que - (optional)
  • donde - (optional) especifica un criterio
  • Ordenar por - (optional) especifica el criterio de ordenación de los resultados
  • retorno - Especifica lo que volver en el resultado

La cláusula

La cláusula se une una variable para cada artículo devuelto por el en la expresión. El resultados cláusula en iteración. No puede haber múltiples cláusulas en la misma expresión FLWOR.

Para repetir un número específico de veces en una de cláusula, pueda utilizar el to la palabra clave:

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

Resultado:

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

El at la palabra clave puede utilizarse para contar la iteración:

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

Resultado:

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

También se permite con más de una en la expresión en la cláusula FOR. Usar una coma para separar cada en la expresión:

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

Resultado:

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

La cláusula let

La cláusula let permite asignaciones de variables y evita la repetición de la misma expresión muchas veces. La cláusula let no resulta en iteración.

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

Resultado:

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

La cláusula WHERE

La cláusula en la que se utiliza para especificar uno o más criterios para el resultado:

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

El orden por la cláusula

La cláusula ORDER BY se utiliza para especificar el orden de clasificación de los resultados. Aquí queremos ordenar los resultados por categoría y título:

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

Resultado:

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

La cláusula de retorno

La cláusula de retorno especifica lo que se va a devolver.

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

Resultado:

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