XQuery - FLWOR

FLWOR es un acrónimo que significa "For, Let, Where, Order by, Return". La siguiente lista muestra lo que representan en una expresión FLWOR:

  • F - Para: selecciona una colección de todos los nodos.

  • L - Let: coloca el resultado en una variable XQuery.

  • W - Donde: selecciona los nodos especificados por la condición.

  • O - Ordenar por: ordena los nodos especificados según los criterios.

  • R - Devolver: devuelve el resultado final.

Ejemplo

A continuación se muestra un documento XML de muestra que contiene información sobre una colección de libros. Usaremos una expresión FLWOR para recuperar los títulos de aquellos libros con un precio superior a 30.

books.xml

<?xml version="1.0" encoding="UTF-8"?>
<books>
   
   <book category="JAVA">
      <title lang="en">Learn Java in 24 Hours</title>
      <author>Robert</author>
      <year>2005</year>
      <price>30.00</price>
   </book>
   
   <book category="DOTNET">
      <title lang="en">Learn .Net in 24 hours</title>
      <author>Peter</author>
      <year>2011</year>
      <price>70.50</price>
   </book>
   
   <book category="XML">
      <title lang="en">Learn XQuery in 24 hours</title>
      <author>Robert</author>
      <author>Peter</author> 
      <year>2013</year>
      <price>50.00</price>
   </book>
   
   <book category="XML">
      <title lang="en">Learn XPath in 24 hours</title>
      <author>Jay Ban</author>
      <year>2010</year>
      <price>16.50</price>
   </book>
   
</books>

El siguiente documento de Xquery contiene la expresión de consulta que se ejecutará en el documento XML anterior.

books.xqy

let $books := (doc("books.xml")/books/book)
return <results>
{
   for $x in $books
   where $x/price>30
   order by $x/price
   return $x/title
}
</results>

Resultado

<title lang="en">Learn XQuery in 24 hours</title>
<title lang="en">Learn .Net in 24 hours</title>

Verificar resultado

Para verificar el resultado, reemplace el contenido de books.xqy (dado en el capítulo Configuración del entorno ) con la expresión XQuery anterior y ejecute el programa java XQueryTester.