XQuery Ejemplos


En esta sección, vamos a aprender algo de sintaxis básica de XQuery mediante el estudio de un ejemplo.


Documento de ejemplo XML

Usaremos este documento XML en el siguiente ejemplo.

"books.xml":

<?xml version="1.0" encoding="ISO-8859-1"?>

<bookstore>

<book category="COOKING">
  Everyday Italian
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

<book category="CHILDREN">
  Harry Potter
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

<book category="WEB">
  XQuery Kick Start
  <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">
  Learning XML
  <author>Erik T. Ray</author>
  <year>2003</year>
  <price>39.95</price>
</book>

</bookstore>

。


¿Cómo seleccionar nodos de "books.xml"?

Funciones

XQuery utiliza funciones para extraer datos de documentos XML.

doc() se utiliza para abrir el archivo "books.xml":

doc("books.xml")

Expresiones de ruta

XQuery utiliza expresiones de ruta para navegar a través de los elementos de un documento XML.

La siguiente expresión de ruta se utiliza para seleccionar todos los elementos title en el archivo "books.xml":

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

(/bookstore selecciona el elemento bookstore, /book selecciona todos los elementos book bajo el elemento bookstore, y /title selecciona todos los elementos title bajo cada elemento book)

La consulta XQuery anterior extrae los siguientes datos:

Everyday Italian
Harry Potter
XQuery Kick Start
Learning XML

Predicados

XQuery utiliza predicados para limitar los datos extraídos del documento XML.

El siguiente predicado se utiliza para seleccionar todos los elementos book bajo el elemento bookstore, y el valor del elemento price dentro de los elementos book seleccionados debe ser menor que 30:

doc("books.xml")/bookstore/book[price<30]

La consulta XQuery anterior puede extraer los siguientes datos:

<book category="CHILDREN">
  Harry Potter
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>
Otras extensiones