SlideShare una empresa de Scribd logo
Introducción a XQuery
Jorge Castellanos Vega
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
<?xml version="1.0" encoding="UTF-8"?>
<MiBibliotecaMP3>
<archivo almacenado="DISCO1">
<canción>Hangar 18</canción>
<artista>Megadeth</artista>
<disco>Rust in Peace</disco>
<puntuacion>9</puntuacion>
</archivo>
<archivo almacenado="DISCO2">
<canción>Peace Sells</canción>
<artista>Megadeth</artista>
<disco>Peace Sells...But Who's
Buying</disco>
<puntuacion>9</puntuacion>
</archivo>
<archivo almacenado="DISCO1">
<canción>Master of Puppets</canción>
<artista>Metallica</artista>
<disco>Master of Puppets</disco>
<puntuacion>10</puntuacion>
</archivo>
<archivo almacenado="DISCO2">
<canción>Among The Living</canción>
<artista>Anthrax</artista>
<disco>Among The Living</disco>
<puntuacion>8</puntuacion>
</archivo>
<archivo almacenado="DISCO1">
<canción>For Whom The Bell Tolls</canción>
<artista>Metallica</artista>
<disco>Ride The Lightning</disco>
<puntuacion>8</puntuacion>
</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/

Más contenido relacionado

PDF
Datos En La Web - Clase 2
PPT
Capacitacion xquery
ODP
PPTX
Aprendiendo XPath
PDF
Diseño de Ontologías: Protégé - OWL: SPARQL
PDF
XQuery y XPath for SQL Server 2012 itpros dc_chapter6
PDF
Grails: Framework para el desarrollo de aplicaciones Web No 4
Datos En La Web - Clase 2
Capacitacion xquery
Aprendiendo XPath
Diseño de Ontologías: Protégé - OWL: SPARQL
XQuery y XPath for SQL Server 2012 itpros dc_chapter6
Grails: Framework para el desarrollo de aplicaciones Web No 4

Similar a Introducciขn a XQuery.pdf (20)

PDF
Datos En La Web - Clase 1
PPTX
Blind X Path Injection
PPT
Introducción a XML Schema
PDF
Tesis Licenciatura
PPTX
Programación Web - Java Script.pptx
PPTX
Bd no sq ldocumento
PPT
Introducción a XML
PDF
Introduccion a DOM y AJAX - Javier Oliver Fulguera
PDF
10.2 fhir 2
PPT
PDF
API XML basada en pyxser bajo Django
PDF
Introduccion a xhtml
PDF
Introduccion a xhtml
PDF
5. desarrollador web profesional
PDF
Introduccion a xhtml
PPTX
PDF
026 guia j query
ODP
Introducción a Plone
Datos En La Web - Clase 1
Blind X Path Injection
Introducción a XML Schema
Tesis Licenciatura
Programación Web - Java Script.pptx
Bd no sq ldocumento
Introducción a XML
Introduccion a DOM y AJAX - Javier Oliver Fulguera
10.2 fhir 2
API XML basada en pyxser bajo Django
Introduccion a xhtml
Introduccion a xhtml
5. desarrollador web profesional
Introduccion a xhtml
026 guia j query
Introducción a Plone
Publicidad

Último (15)

PDF
LA INTELIGENCIA ARTIFICAL SU HISTORIA Y EL FUTURO
PDF
Herramientaa de google google keep, maps.pdf
PPT
laser seguridad a la salud humana de piel y vision en laser clase 4
PPTX
tema-2-interes-.pptx44444444444444444444
PPTX
FUNCIONES DE CLASSROOM EN EL FUNCIONAMIENTO ESCOLAR
PDF
[Ebook gratuito] Introducción a la IA Generativa, Instalación y Configuración...
PPTX
Qué es Google Classroom Insertar SlideShare U 6.pptx
PPTX
presentacion_energias_renovables_renovable_.pptx
PPTX
Presentación de un estudio de empresa pp
PPTX
Plantilla-Hardware-Informático-oficce.pptx
PDF
Mesopotamia y Egipto.pptx.pdf historia universal
PDF
CAPACITACIÓN MIPIG - MODELO INTEGRADO DE PLANEACIÓN Y GESTIÓN
PPTX
Guia de power bi de cero a avanzado detallado
PDF
Frases de Fidel Castro. Compilación Norelys Morales Aguilera
PPTX
Evolución de la computadora ACTUALMENTE.pptx
LA INTELIGENCIA ARTIFICAL SU HISTORIA Y EL FUTURO
Herramientaa de google google keep, maps.pdf
laser seguridad a la salud humana de piel y vision en laser clase 4
tema-2-interes-.pptx44444444444444444444
FUNCIONES DE CLASSROOM EN EL FUNCIONAMIENTO ESCOLAR
[Ebook gratuito] Introducción a la IA Generativa, Instalación y Configuración...
Qué es Google Classroom Insertar SlideShare U 6.pptx
presentacion_energias_renovables_renovable_.pptx
Presentación de un estudio de empresa pp
Plantilla-Hardware-Informático-oficce.pptx
Mesopotamia y Egipto.pptx.pdf historia universal
CAPACITACIÓN MIPIG - MODELO INTEGRADO DE PLANEACIÓN Y GESTIÓN
Guia de power bi de cero a avanzado detallado
Frases de Fidel Castro. Compilación Norelys Morales Aguilera
Evolución de la computadora ACTUALMENTE.pptx
Publicidad

Introducciขn a XQuery.pdf

  • 1. Introducción a XQuery Jorge Castellanos Vega
  • 2. 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.
  • 3. Documento de ejemplo Archivo: canciones.xml <?xml version="1.0" encoding="UTF-8"?> <MiBibliotecaMP3> <archivo almacenado="DISCO1"> <canción>Hangar 18</canción> <artista>Megadeth</artista> <disco>Rust in Peace</disco> <puntuacion>9</puntuacion> </archivo> <archivo almacenado="DISCO2"> <canción>Peace Sells</canción> <artista>Megadeth</artista> <disco>Peace Sells...But Who's Buying</disco> <puntuacion>9</puntuacion> </archivo> <archivo almacenado="DISCO1"> <canción>Master of Puppets</canción> <artista>Metallica</artista> <disco>Master of Puppets</disco> <puntuacion>10</puntuacion> </archivo> <archivo almacenado="DISCO2"> <canción>Among The Living</canción> <artista>Anthrax</artista> <disco>Among The Living</disco> <puntuacion>8</puntuacion> </archivo> <archivo almacenado="DISCO1"> <canción>For Whom The Bell Tolls</canción> <artista>Metallica</artista> <disco>Ride The Lightning</disco> <puntuacion>8</puntuacion> </archivo> </MiBibliotecaMP3> Puedes descargar los ejemplos en el siguiente enlace: http://cloud.educa.madrid.org/index.php/s/EPc1nNZtYrm5zZL
  • 4. 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
  • 5. 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.
  • 6. 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 :)
  • 7. 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
  • 8. Seleccionando nodos A las expresiones se les pueden añadir predicados, por ejemplo:
  • 9. 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.
  • 10. Expresiones FLWOR Por ejemplo la siguiente expresión. ◦ doc("canciones.xml")/MiBibliotecaMP3/archivo[puntuacion>8]/canción Tiene su equivalente FLOWR
  • 11. 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.
  • 12. Expresiones FLOWR En xQuery tester online: No es necesario incluir doc() Resultado
  • 13. 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?
  • 14. 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.
  • 15. Añadiendo HTML a FLWOR Añadiendo un atributo XML como identificador de clase en el archivo HTML de salida.
  • 16. 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 ().
  • 18. 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.
  • 19. Otras posibilidades de FLWOR Recordemos su uso mediante un ejemplo
  • 20. 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.
  • 21. 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.
  • 22. 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.
  • 23. 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.
  • 24. Otras posibilidades de FLWOR La cláusula where ◦ Es posible establecer condiciones compuestas
  • 25. Otras posibilidades de FLWOR La cláusula where ◦ Un ejemplo con and
  • 26. Otras posibilidades de FLWOR La cláusula where ◦ Un ejemplo con and y not
  • 27. 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)
  • 28. 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.
  • 29. Funciones en XQuery Ejemplo: en color verde las llamadas a función
  • 30. 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... };
  • 31. Funciones definidas por el usuario Ejemplo: función que pasa de minutos a segundos