Documentos de Académico
Documentos de Profesional
Documentos de Cultura
y
Rosa Isela Lpez Aguilar
Maestra en Ciencias e Ingeniera
de la Computacin
Octubre 2008
Introduccin
De acuerdo al incremento en la cantidad de
informacin que es almacenada, intercambiada y
presentada usando XML, la habilidad para
consultar fuentes de datos XML llega a ser muy
importante. El XML tiene la flexibilidad de
representar diferentes tipos de informacin
desde diversas fuentes. Para explotar esta
flexibilidad, un lenguaje de consulta XML debe
proveer componentes para obtener e interpretar
la informacin desde diversas fuentes.
2
Qu es XQuery?
* XQuery es el lenguaje para consultar datos
XML.
* XQuery para XML es como el SQL para las
BD's.
* XQuery fue construido sobre expresiones
XPath
* XQuery es soportado por la mayor parte de los
proveedores de BD's (IBM, Oracle,
Microsoft, etc.)
* XQuery es una recomendacin W3C.
Consultas en XQuery
Una consulta en XQuery es una expresin que lee una secuencia
de datos en XML y devuelve como resultado otra secuencia de
datos en XML.
Un detalle importante es que, a diferencia de lo que sucede en
SQL, en XQuery las expresiones y los valores que devuelven son
dependientes del contexto. Por ejemplo: los nodos que
aparecern en el resultado dependen de los namespaces, de la
posicin donde aparezca la etiqueta raz del nodo (dentro de otra,
por ejemplo), etc.
En XQuery las consultas pueden estar compuestas por clusulas
de hasta cinco tipos distintos. Las consultas siguen la norma
FLWOR, siendo FLWOR las siglas de For, Let, Where, Order y
Return.
8
Consultas en XQuery
En la siguiente tabla se describe la funcin de cada bloque:
Consultas en XQuery
En el siguiente ejemplo de clusula for, la variable $b tomar
como valor cada uno de los nodos libros que contenga el archivo
libros.xml. Cada uno de esos nodos libros, ser una tupla
vinculada a la variable $b.
Resultado de la consulta:
10
Consultas en XQuery
Las barras: // son parte de la expresin XPath que indica la
localizacin de los valores que tomar la variable $b. En esta
consulta la funcin count() hace la misma funcin que en SQL,
contar el nmero de elementos, nodos en este caso,
referenciados por la variable $c.
Una expresin FLWOR vincula variables a valores con clusulas
for y let y utiliza esos vnculos para crear nuevas estructuras de
datos XML.
11
Consultas en XQuery
A continuacin se muestra otro ejemplo de consulta XQuery. La
siguiente consulta devuelve los ttulos de los libros del ao 2.000.
Como ao es un atributo y no un elemento se le antecede con
un carcter @.
Resultado de la consulta:
12
Consultas en XQuery
A continuacin se muestran los resultados parciales de la
consulta:
13
14
Resultado de la consulta:
15
Resultado de la consulta:
17
18
19
20
Funciones XQuery:
Xquery ofrece adems funciones para la recuperacin de
informacin.
Estas funciones son:
21
22
23
24
25
26
Recuperara:
<directores>
<director>Peter Jackson</director>
</directores>
<directores>
<director>Alejandro Amenabar</director>
</directores>
<directores>
<director>Ethan Coen</director>
</directores>
<directores>
<director>Joel Coen</director>
</directores>
27
Recuperara:
<directores>
<director>Peter Jackson</director>
<director>Alejandro Amenabar</director>
<director>Ethan Coen</director>
<director>Joel Coen</director>
</directores>
28
Recuperara:
Recuperara, nicamente los directores que hubiesen estrenado pelcula el da
19-12-2007 (Suponemos fechaEstreno es un atributo por ello ponemos @
delante, el /../ es para subir un nivel en el rbol XML donde est la informacin):
<directores>
<director>Peter Jackson</director>
<director>Alejandro Amenabar</director>
</directores>
29
30
muchas
utilidades ya que puedes convertir la informacin recuperada a HTML,
PDF, o cualquier otro.
En los anteriores ejemplos ya utilizbamos la clausula RETURN para
que nos devolviera los resultados entre los tags <directores>.
XQuery tambin admite expresiones condicionales IF-THEN-ELSE. Esta
clusula es til para dar un formato diferente a la salida dependiendo de la
informacin de esta, es decir, podemos cambiar la estructura de los nodos
en los que recuperamos la informacin segn nos convenga por su
contenido. El ELSE es obligatorio pero puede ser nicamente ELSE ().
31
Entonces:
IF ($b = "Alejandro Amenabar") THEN
<espanol>{ $b }</espanol>
ELSE
<directores>{ $b }</directores>
32
Ejemplo:
LET $b IN doc("informacin.xml")//pelcula/titulo
WHERE SOME $a in $b/../director
SATISFIES ($a = "Ethan Coen")
RETURN
<titulos>$b</titulos>
Recuperara los ttulos de las pelculas en las que algn director fuera
"Ethan Coen"
<titulos>
<titulo>Matrix</titulo>
<titulo>No es pas para pobres</titulo>
</ titulos >
33
Recuperara los ttulos de las pelculas en las que todos los directores
(en este caso el nico) fueran "Ethan Coen"
<titulos>
<titulo>Matrix</titulo>
</ titulos >
34
Referencias
http://geocities.com/recuperacioninformacionorganiza/T
utorial_XQuery.html
Departamento de Lenguajes y Sistemas Informticos. Escuela
Tcnica Superior de Ingeniera Informtica. Universidad de Sevilla.
Avda Reina Mercedes, s/n. 41012 SEVILLA.
Fax : 95 455 71 39. Tlf: 95 455 71 39. E-mail: lsi@lsi.us.es
http://www.lsi.us.es/docs/informes/LSI-2005-02.pdf
35