XQuery - Primera aplicación

Ejemplo

A continuación se muestra un documento XML de muestra que contiene los registros de una librería de varios libros.

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>

A continuación se muestra un documento de Xquery de muestra que contiene la expresión de consulta que se ejecutará en el documento XML anterior. El propósito es obtener los elementos del título de aquellos nodos XML donde el precio es superior a 30.

books.xqy

for $x in doc("books.xml")/books/book
where $x/price>30
return $x/title

Resultado

<title lang="en">Learn .Net in 24 hours</title>
<title lang="en">Learn XQuery 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.

Expresiones XQuery

Entendamos cada parte de la expresión XQuery anterior.

Uso de funciones

doc("books.xml")

doc () es una de las funciones de XQuery que se utiliza para localizar la fuente XML. Aquí hemos pasado "books.xml". Teniendo en cuenta la ruta relativa, books.xml debería estar en la misma ruta donde está presente books.xqy.

Uso de expresiones XPath

doc("books.xml")/books/book

XQuery utiliza en gran medida expresiones XPath para localizar la parte necesaria de XML en la que se va a realizar la búsqueda. Aquí hemos elegido todos los nodos de libros disponibles en el nodo de libros.

Iterar los objetos

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

XQuery trata los datos xml como objetos. En el ejemplo anterior, $ x representa el nodo seleccionado, mientras que el bucle for itera sobre la colección de nodos.

Aplicar la condición

where $x/price>30

Como $ x representa el nodo seleccionado, "/" se usa para obtener el valor del elemento requerido; La cláusula "where" se utiliza para poner una condición en los resultados de búsqueda.

Devuelve el resultado

return $x/title

Como $ x representa el nodo seleccionado, "/" se usa para obtener el valor del elemento requerido, precio, título; La cláusula "return" se utiliza para devolver los elementos de los resultados de búsqueda.