PDF de programación - XQuery

Imágen de pdf XQuery

XQuerygráfica de visualizaciones

Publicado el 15 de Enero del 2019
1.001 visualizaciones desde el 15 de Enero del 2019
364,8 KB
14 paginas
Creado hace 8a (08/05/2015)
XQUERY. Lenguajes de Marcas y Sistemas de Gestión de Información.

Definición de XQuery.


Podemos definir XQuery con un símil en el que XQuery es a XML lo mismo

que SQL es a las bases de datos relacionales.

XQuery es un lenguaje de consulta diseñado para escribir consultas sobre
colecciones de datos expresadas en XML. Abarca desde archivos XML hasta bases de
datos relacionales con funciones de conversión de registros a XML. Su principal
función es extraer información de un conjunto de datos organizados como un árbol de
etiquetas XML. En este sentido XQuery es independiente del origen de los datos.

XQuery es un lenguaje funcional, lo que significa que, en vez de ejecutar una
lista de comandos como un lenguaje procedimental clásico, cada consulta es una
expresión que es evaluada y devuelve un resultado, al igual que en SQL. Diversas
expresiones pueden combinarse de una manera muy flexible con otras expresiones para
crear nuevas expresiones más complejas y de mayor potencia semántica.

Requerimientos técnicos:

 XQuery debe ser un lenguaje declarativo. Al igual que SQL hay que indicar que

se quiere, no la manera de obtenerlo.

 XQuery debe ser independiente del protocolo de acceso a la colección de datos.
Una consulta en XQuery debe funcionar igual al consultar un archivo local que
al consultar un servidor de bases de datos que al consultar un archivo XML en
un servidor web.

 Las consultas y los resultados deben respetar el modelo de datos XML
 Las consultas y los resultados deben ofrecer soporte para los namespace.
 Debe ser capaz de soportar XML-Schemas y DTDs y también debe ser capaz de

trabajar sin ninguno de ellos.

 XQuery debe poder trabajar con independencia de la estructura del documento,

esto es, sin necesidad de conocerla.

 XQuery debe soportar tipos simples, como enteros y cadenas, y tipos complejos,

como un nodo compuesto por varios nodos hijos.

 Las consultan deben soportar cuantificadores universales (para todo) y

existenciales (existe).

 Las consultas deben soportar operaciones sobre jerarquías de nodos y secuencias

de nodos.

 Debe ser posible en una consulta combinar información de múltiples fuentes.
 Las consultas deben ser capaces de manipular los datos independientemente del

origen de estos.

 Mediante XQuery debe ser posible definir consultas que transformen las
estructuras de información originales y debe ser posible crear nuevas estructuras
de datos.

 El lenguaje de consulta debe ser independiente de la sintaxis, esto es, debe ser
posible que existan varias sintaxis distintas para expresar una misma consulta en
XQuery.



Aunque XQuery y SQL puedan considerarse similares en casi la totalidad de sus
aspectos, el modelo de datos sobre el que se sustenta XQuery es muy distinto del
modelo de datos relacional sobre el que sustenta SQL, ya que XML incluye conceptos
como jerarquía y orden de los datos que no están presentes en el modelo relacional. Por
ejemplo, a diferencia de SQL, en XQuery el orden en que se encuentren los datos es
importante y determinante, ya que no es lo mismo buscar una etiqueta <B> dentro de



1

XQUERY. Lenguajes de Marcas y Sistemas de Gestión de Información.

una etiqueta <A> que todas las etiquetas <B> del documento (que pueden estar
anidadas dentro de una etiqueta <A> o fuera). XQuery ha sido construido sobre la base
de Xpath.


Datos de ejemplo.


En los ejemplos de consultas vamos a trabajar con un conjunto de datos
compuesto por fichas de varios libros almacenadas en un archivo local llamado
“libros.xml”, cuyo contenido se muestra a continuación.

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

<libro año="1994">

<titulo>TCP/IP Illustrated</titulo>
<autor>

<apellido>Stevens</apellido>
<nombre>W.</nombre>

</autor>
<editorial>Addison-Wesley</editorial>
<precio> 65.95</precio>

</libro>
<libro año="1992">

<titulo>Advanced Programming for Unix
environment</titulo>
<autor>

<apellido>Stevens</apellido>
<nombre>W.</nombre>

</autor>
<editorial>Addison-Wesley</editorial>
<precio>65.95</precio>

</libro>
<libro año="2000">

<titulo>Data on the Web</titulo>
<autor>

<apellido>Abiteboul</apellido>
<nombre>Serge</nombre>

</autor>
<autor>

<apellido>Buneman</apellido>
<nombre>Peter</nombre>

</autor>
<autor>

<apellido>Suciu</apellido>
<nombre>Dan</nombre>

</autor>
<editorial>Morgan Kaufmann editorials</editorial>
<precio>39.95</precio>

</libro>
<libro año="1999">

<titulo> Economics of Technology for Digital
TV</titulo>
<editor>

<apellido>Gerbarg</apellido>



2

XQUERY. Lenguajes de Marcas y Sistemas de Gestión de Información.

<nombre>Darcy</nombre>
<afiliacion>CITI</afiliacion>

</editor>
<editorial>Kluwer Academic editorials</editorial>
<precio>129.95</precio>

</libro>

</bib>



En algunas consultas también necesitaremos combinar la información contenida
información contenida en el archivo

en el archivo “libros.xml” con
“comentarios.xml”. El contenido de este archivo se muestra a continuación.

<?xmlversion="1.0" encoding="ISO-8859-1"?>
<comentarios>

la

<entrada>

<titulo>Data on the Web</titulo>
<precio>34.95</precio>
<comentario>
Un libro muy bueno sobre bases de datos.
</comentario>

</entrada>
<entrada>

<titulo>Advanced Programming for Unix
environment</titulo>
<precio>65.95</precio>
<comentario>
Un libro claro y detallado de programación en UNIX.
</comentario>

</entrada>
<entrada>

<titulo>TCP/IP Illustrated</titulo>
<precio>65.95</precio>
<comentario>
Uno de los mejores libros de TCP/IP
</comentario>

</entrada>

</comentarios>


Consultas en XQuery.


Una consulta en XQuery es una expresión 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 aparecerán en el resultado dependen de los namespaces, de la posición
donde aparezca la etiqueta raíz del nodo (dentro de otra, por ejemplo), etc.

En XQuery las consultas pueden estar compuestas por cláusulas de hasta cinco
tipos distintos. Las consultas siguen la norma FLWOR, siendo FLWOR las siglas de
For, Let, Where, Order y Return. A continuación, se describe la función de cada bloque:



3



XQUERY. Lenguajes de Marcas y Sistemas de Gestión de Información.

For
Vincula una o más variables a expresiones escritas en XPath, creando un flujo de tuplas
en el que cada tupla está vinculada a una de las variables.
Let
Vincula una variable al resultado completo de una expresión añadiendo esos vínculos a
las tuplas generadas por una cláusula for o, si no existe ninguna cláusula for, creando
una única tupla que contenga esos vínculos.
Where
Filtra las tuplas eliminando todos los valores que no cumplan las condiciones dadas.
Order by
Ordena las tuplas según el criterio dado.
Return
Construye el resultado de la consulta para una tupla dada, después de haber sido filtrada
por la cláusula where y ordenada por la cláusula order by.


En XQuery, cuando usamos el térmico tupla, nos estamos refiriendo a cada uno

de los valores que toma una variable.
A continuación, se muestra gráficamente el orden en que se ejecuta cada cláusula de una
consulta y los resultados de cada una:



4



XQUERY. Lenguajes de Marcas y Sistemas de Gestión de Información.



En el siguiente ejemplo de cláusula for, la variable $b tomará como valor cada
uno de los nodos libros que contenga en archivo “libros.xml”. Cada uno de esos nodos
libros, será una tupla vinculada a la variable $b.

for $b in doc(“libros.xml”)//bib/libro


A continuación se muestra un ejemplo de una consulta donde aparecen las 5
cláusulas. La siguiente consulta devuelve los títulos de los libros que tengan más de dos
autores ordenados por su título.

for $b in doc("libros.xml")//libro
let $c := $b//autor
where count($c) > 2
order by $b/titulo
return $b/ titulo

El resultado de esta consulta se muestra a continuación.

<titulo>Data on the Web</titulo>



5

XQUERY. Lenguajes de Marcas y Sistemas de Gestión de Información.

Las barras: “//” no indican comentarios, sino que son parte de la expresión
XPath que indica la localización de los valores que tomará la variable $b. En esta
consulta la función count() hace la misma función que en SQL, contar el número de
elementos, nodos en este caso, referenciados por la variable $c. La diferencia entre la
cláusula for y la cláusula let se explica con más detalle en un punto posterior.

Una expresión FLWOR vincula variables a valores con cláusulas for y let y

utiliza esos vínculos para crear nuevas estructuras de datos XML.

A continuación se muestra otro ejemplo de consulta XQuery. La siguiente
consulta devuelve los títulos de los libros del año 2.000. Como “año” es un atributo y no
una etiqueta se le antecede con un carácter “@”.

for $b in doc("libros.xml")//libro
where $b/@año = "2000"
return $b/titulo

El resultado de la consulta anterior se muestra a continuación.

<titulo>Data on the Web</titulo>


A continuación se muestra de forma gráfica como se ejecutaría la consulta

anterior y los resultados parciales de cada una de sus cláusulas:



Reglas generales.


A continuación, enunciamos una serie de reglas que debe cumplir cualquier

consulta escrita en XQuery:

For y let sirven para crear las tuplas con las que trabajará el resto de las cláusulas
  • Links de descarga
http://lwp-l.com/pdf14860

Comentarios de: XQuery (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad