Latest web development tutorials

Selección de XQuery y Filtrado

documentos de instancia XML

En el siguiente ejemplo vamos a seguir utilizando este documento "books.xml" (mismo archivo XML y la sección se utiliza más arriba).

Ver archivo "books.xml" en su navegador .


Seleccionar y filtrar los elementos

Como se ha visto en el capítulo anterior, utilizamos la expresión FLWOR o una expresión de ruta para seleccionar y elementos de filtro.

Considere 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 - (opcional) para cada uno de los elementos incluidos devueltos por la expresión en una variable
  • dejar que - (opcional)
  • donde - (opcional) establecer una condición
  • Ordenar por - (opcional) establecer el orden de los resultados
  • vuelven - las disposiciones de los resultados devueltos contenido

para la declaración

declaración de la variable ligada a cada elemento devuelto por la expresión. para la iteración comunicado. Puede haber múltiples para la misma sentencia en una expresión FLWOR.

Para un número determinado de veces en una instrucción de bucle, puede utilizar palabras clave para:

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

resultados:

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

Las palabras clave pueden ser utilizados para calcular la iteración en:

for $x at $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>

En la declaración también permite más de uno de expresión. Por favor, use una coma para separar cada uno en la expresión:

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>

dejar que la declaración

dejar que la declaración puede ser variable distribución completa, y evitar repetir la misma expresión. dejar que la declaración no causa iteración.

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

resultados:

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

donde las declaraciones

donde se utiliza declaración para establecer el resultado de una o más condiciones (criterios).

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

ORDER BY

ORDER BY para ordenar los resultados de un orden predeterminado. Aquí, queremos ordenar los resultados en función de la categoría y el título:

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>

sentencia de retorno:

declaración de retorno especifica para devolver el contenido.

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>