0% encontró este documento útil (0 votos)
134 vistas

Introducción A XQuery

Este documento introduce XQuery, un lenguaje para consultar datos XML. XQuery permite extraer información de documentos XML para su uso en servicios web, informes y transformación de XML a XHTML. Se construye sobre expresiones XPath y puede usarse para buscar dentro de documentos web. Se muestra un ejemplo de archivo XML y cómo probar consultas XQuery en línea o localmente.

Cargado por

Pepe
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
134 vistas

Introducción A XQuery

Este documento introduce XQuery, un lenguaje para consultar datos XML. XQuery permite extraer información de documentos XML para su uso en servicios web, informes y transformación de XML a XHTML. Se construye sobre expresiones XPath y puede usarse para buscar dentro de documentos web. Se muestra un ejemplo de archivo XML y cómo probar consultas XQuery en línea o localmente.

Cargado por

Pepe
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 32

Introducción a XQuery

Qué es XQuery
Lenguaje diseñado para consultar datos en archivos XML.
Equivalente XML del SQL en Bases de Datos.
Se construye sobre expresiones XPath.
Puede usarse para:
◦ Extraer información para usar en servicios web.
◦ Generar resúmenes e informes.
◦ Transformar XML en XHTML.
◦ Buscar dentro de documentos web para obtener información de interés.
Documento de ejemplo
Archivo: canciones.xml <archivo almacenado="DISCO1">
<canción>Master of Puppets</canción>
<artista>Metallica</artista>
<?xml version="1.0" encoding="UTF-8"?> <disco>Master of Puppets</disco>
<MiBibliotecaMP3> <puntuacion>10</puntuacion>
<archivo almacenado="DISCO1"> </archivo>
<canción>Hangar 18</canción> <archivo almacenado="DISCO2">
<artista>Megadeth</artista> <canción>Among The Living</canción>
<disco>Rust in Peace</disco> <artista>Anthrax</artista>
<puntuacion>9</puntuacion> <disco>Among The Living</disco>
</archivo> <puntuacion>8</puntuacion>
<archivo almacenado="DISCO2"> </archivo>
<canción>Peace Sells</canción> <archivo almacenado="DISCO1">
<artista>Megadeth</artista> <canción>For Whom The Bell Tolls</canción>
<disco>Peace Sells...But Who's <artista>Metallica</artista>
Buying</disco> <disco>Ride The Lightning</disco>
<puntuacion>9</puntuacion> <puntuacion>8</puntuacion>
</archivo> </archivo>
</MiBibliotecaMP3>
Puedes descargar los ejemplos en el siguiente enlace: http://cloud.educa.madrid.org/index.php/s/EPc1nNZtYrm5zZL
Software
Todos los ejemplos se han probado sobre Ubuntu utilizando el intérprete xQilla

También puedes usar un servicio online


como
http://www.xpathtester.com/xquery
En ese caso no es necesario hacer
referencia al archivo mediante la
función doc
Software
Podemos probar que todo está correcto utilizando cualquier editor y escribiendo un programa
como el de la imagen. Posteriormente lo ejecutamos desde línea de comandos.
Sintaxis XQuery
XQuery es sensible a mayúsculas y todos los elementos, atributos y variables deben ser
identificadores válidos XML.
Las cadenas de caracteres pueden delimitarse tanto por comillas simples (‘cadena’) como por
comillas dobles (“cadena”).
Las variables se definen con un símbolo de dólar $ seguido del nombre de la variable. Por
ejemplo $contador.
Los comentarios se delimitan mediante (: para la apertura y :) para el cierre.
◦ (: esto es un comentario en Xquery :)
Seleccionando nodos
Xquery utiliza funciones para extraer los datos de los documentos XML.
Para abrir un documento se usa la función doc()
Para navegar a través de un documento se usan expresiones de ruta. Por ejemplo:
◦ doc("canciones.xml")/MiBibliotecaMP3/archivo/canción
Seleccionando nodos
A las expresiones se les pueden añadir predicados, por ejemplo:
Expresiones FLWOR
FLWOR es un acrónimo para For, Let, Where, Order by, Return. Cada una de las instrucciones
tiene un significado concreto.
For – Selecciona una secuencia de nodos.
Let – Asigna un valor a una variable.
Where – Establece una condición que filtra los nodos.
Order by – Realiza una ordenación de los nodos que han pasado la condición.
Return – Valor de retorno, se evalúa una vez por cada nodo.
Expresiones FLWOR
Por ejemplo la siguiente expresión.
◦ doc("canciones.xml")/MiBibliotecaMP3/archivo[puntuacion>8]/canción

Tiene su equivalente FLOWR


Expresiones FLWOR
En el código:

La cláusula for va asignando a la variable $i el valor de cada uno de los nodos del archivo que se
ajustan a la expresión /MiBibliotecaMP3/archivo
Para cada elemento seleccionado se evalúa la condición mediante la instrucción where asegurándose
que el valor de la puntuación del elemento sea mayor que 8.
Mediante return para cada elemento que cumple con la condición se devuelve el valor del elemento
canción que es lo que se muestra en la salida.
Expresiones FLOWR
En xQuery tester online:
No es necesario incluir doc()
Resultado
Añadiendo HTML a FLWOR
Es posible combinar HTML con una Expresión FLOWR. Veamos un ejemplo:

Combinamos HTML con código XQuery, es


importante tener en cuenta que el código
XQuery se presenta entre paréntesis {}.

Por otro lado en la salida se incorporan los


nombres de las etiquetas además de los
datos ¿cómo hacemos para solucionarlo?
Añadiendo HTML a FLWOR
Para evitar que el return nos devuelva los títulos de las etiquetas hacemos uso de la función
data.
Añadiendo HTML a FLWOR
Añadiendo un atributo XML como identificador de clase en el archivo HTML de salida.
Expresiones condicionales
Es posible incorporar en XQuery la expresión if-
then-else
◦ La expresión requiere paréntesis alrededor de la
condición del If
◦ Al contrario que en otros lenguajes es obligatorio
añadir la parte de else aunque no haya acción
asociada, en ese caso podemos dejar
simplemente else ().
Expresiones condicionales
Ejemplo if then else completo
Otras posibilidades de FLWOR
Tal y como hemos visto anteriormente en XQuery podemos filtrar elementos mediante
expresiones de ruta o con expresiones FLWOR.
Recordamos que en las expresiones FLWOR la función de cada instrucción era:
◦ for – asocia una variable a cada elemento devuelto en la expresión.
◦ let – define una variable y la asocia un valor.
◦ where – especifica un criterio de selección de elementos
◦ order by – define cómo queremos ordenar los resultados
◦ return – indica qué queremos que se devuelva en el resultado

Ahora vamos a profundizar un poco más en las posibilidades de algunas de las instrucciones.
Otras posibilidades de FLWOR
Recordemos su uso mediante un ejemplo
Otras posibilidades de FLWOR
La cláusula for
◦ La cláusula for realiza una iteración de elementos según se haya indicado en su definición.
◦ Pueden existir múltiples cláusulas for en la misma expresión.
◦ Para especificar un número determinado de iteraciones se puede usar la palabra clave to.
Otras posibilidades de FLWOR
La cláusula for
Puesto que la variable asociada al bucle incorpora el elemento en el que estamos no podemos
usarla para contabilizar las iteraciones. Para ello se usa la palabra clave at.
Otras posibilidades de FLWOR
La cláusula for
◦ Se pueden especificar varias expresiones en la cláusula for, cada una de ellas irá separada por comas.
Otras posibilidades de FLWOR
La cláusula let
◦ Realiza definición y asignación de variables, es importante tener en cuenta que no realiza iteraciones
por si misma.
Otras posibilidades de FLWOR
La cláusula where
◦ Es posible establecer condiciones compuestas
Otras posibilidades de FLWOR
La cláusula where
◦ Un ejemplo con and
Otras posibilidades de FLWOR
La cláusula where
◦ Un ejemplo con and y not
Otras posibilidades de FLWOR
La cláusula order by
◦ Es posible ordenar por varios criterios y especificar si queremos ordenación ascendente (ascending) o
descendente (descending)
Funciones en XQuery
Xquery 1.0. comparten la librería de funciones con Xpath 2.0 y XSLT 2.0.
El método de llamada consiste en escribir el nombre la función acompañada de los argumentos
entre paréntesis separados por comas. Se pueden usar en:
◦ Un elemento.
◦ Predicado de una expresión de ruta.
◦ Cláusula let.

Es posible anidar funciones una dentro de otra.


En la siguiente página tenemos un ejemplo de uso con varias llamadas a funciones.
Funciones en XQuery
Ejemplo: en color verde las llamadas a función
Funciones definidas por el usuario
En caso de que el usuario necesite realizar una función que no está en la librería de funciones de
XQuery puede definir las suyas propias.
◦ Se pueden definir en el propio archivo o en una librería separada.
◦ Los tipos de datos de los parámetros son los mismos definidos para XML Schema
◦ El cuerpo de la función debe estar delimitado por paréntesis
◦ Las funciones en Xquery no utilizan la palabra reservada return, siempre devuelve el último (y único)
valor.
◦ La sintaxis es:
declare function prefijo:nombre_función($parámetros_como_tipos_de_datos)
as Tipo_de_datos_de_retorno
{
...código de la función...
};
Funciones definidas por el usuario
Ejemplo: función que pasa de minutos a segundos
Referencias
https://www.w3schools.com/

También podría gustarte