Ejemplo de XQuery
Aprendamos algo de XQuery básico mirando un ejemplo.
El documento de ejemplo XML
Usaremos el siguiente documento XML en los ejemplos a continuación.
"libros.xml":
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
Vea el archivo "books.xml" en su navegador .
¿Cómo seleccionar nodos de "books.xml"?
Funciones
XQuery utiliza funciones para extraer datos de documentos XML.
La función doc() se usa para abrir el archivo "books.xml":
doc("books.xml")
Expresiones de ruta
XQuery usa expresiones de ruta para navegar a través de elementos en un documento XML.
La siguiente expresión de ruta se utiliza para seleccionar todos los elementos de título en el archivo "books.xml":
doc("books.xml")/bookstore/book/title
(/librería selecciona el elemento de la librería, /libro selecciona todos los elementos del libro debajo del elemento de la librería y /título selecciona todos los elementos del título debajo de cada elemento del libro)
El XQuery anterior extraerá lo siguiente:
<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>
predicados
XQuery usa predicados para limitar los datos extraídos de los documentos XML.
El siguiente predicado se utiliza para seleccionar todos los elementos de libro del elemento de librería que tienen un elemento de precio con un valor inferior a 30:
doc("books.xml")/bookstore/book[price<30]
El XQuery anterior extraerá lo siguiente:
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>