TUTORIALES XQuery. e-business designer Versión 3.3.x. www.oasyssoft.com www.ebdcommunity.com ebd@oasyssoft.com ebd es un producto de



Documentos relacionados
Definición de XQuery.

XML y XQuery. Qué es XML? Qué es XML? (II) Ejemplo de fichero XML. Cuerpo de un documento XML. Estructura de un documento XML

XQuery. Jose Emilio Labra Gayo Departamento de Informática Universidad de Oviedo. XQuery

Bases de Datos XPath - XQuery 1. XML: XPath - XQuery. Jorge Pérez Rojas Universidad de Talca, II Semestre 2006

Introducción a XQuery Autor: Jorge Huedo Díaz Master Oficial en Tegnologías de la Información y Sistemas Informáticos

1. DML. Las subconsultas

LAS SUBCONSULTAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

El lenguaje SQL es un lenguaje estándar para el acceso y

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

CONSULTAS DE RESUMEN SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Transformación de documentos XML con

[ALMACENAMIENTO DE LA INFORMACIÓN]

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

select nombre from profesores where categoria='aso6';

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.

CONSULTAS MULTITABLAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES. Xochitl Clemente Parra Armando Méndez Morales

TIPOS DE VARIABLES EN PHP. DECLARACIÓN Y ASIGNACIÓN. LA INSTRUCCIÓN ECHO PARA INSERTAR TEXTO O CÓDIGO. (CU00816B)

Práctica de introducción a

1. Creación de colecciones y documentos XML en nuestra herramienta exist-db Open Source Native XML Database.

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 8. Elementos Básicos

Procedimientos para agrupar y resumir datos

Visual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Capítulo 9. Archivos de sintaxis

5- Uso de sentencias avanzadas

Tutorial Básico de vbscript

Introducción a la plataforma Moodle Aníbal de la Torre Plataforma Moodle. Accediendo a los contenidos

Creación y administración de grupos de dominio

Modulo 1 El lenguaje Java

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA


Capítulo 1 Documentos HTML5

Codd propuso estos tres lenguajes como base teórica de cualquier lenguaje que quisiera cumplir con los requisitos formales del modelo.

Curso de PHP con MySQL Gratis

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

Fórmulas. Objetivos y Definición. Definir fórmulas nos brinda una forma clave de compartir conocimiento y obtener código generado optimizado

Consultas con combinaciones

Tema 3. Medidas de tendencia central Introducción. Contenido

UN EJEMPLO DE BÚSQUEDA Tutorial sobre el uso de Google.

ESTRUCTURAS CONDICIONALES EN PHP: SWITCH, CASE, BREAK. EJEMPLOS DE USO Y EJERCICIOS RESUELTOS. (CU00820B)

Búsqueda booleana en Internet

Introducción a la Firma Electrónica en MIDAS

Capítulo 4. Vectores y matrices. 4.1 Declaración de tablas. 4.2 Declaración estática de tablas


Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

PHP y MySQL. Indice: Switch Bucles For While do...while

Manual para la utilización de PrestaShop

CAPÍTULO 4. EL EXPLORADOR DE WINDOWS XP

MANUAL BÁSICO DEL LENGUAJE SQL

CREACIÓN Y CONFIGURACIÓN DE WIKIS

Tecnologías en la Educación Matemática. Expresiones. Datos. Expresiones Aritméticas. Expresiones Aritméticas 19/08/2014

Caso práctico de Cuadro de Mando con Tablas Dinámicas

Curso PHP Módulo 1 R-Luis

Introducción a la programación orientada a objetos

Guía de implementación Softland en SQL Server Versión 1.0

Capítulo 12: Indexación y asociación

Capitulo III. Diseño del Sistema.

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

GENERACIÓN DE TRANSFERENCIAS

Kaldeera Advanced Forms 2009 Guía del usuario

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

Mantenimiento Limpieza

LAS BARRAS. La barra de acceso rápido

Lenguaje de Consulta Estructurado S Q. Lenguaje de Consulta Estructurado. Wael Najjar /

Ejemplos básicos de webmathematica para profesores

MATERIAL 2 EXCEL 2007

Que es PHP? Que se puede hacer con PHP? Sintaxis del lenguaje. Variables. Operadores básicos. Condicionales. Ciclos.

Base de datos en Excel

Creación y administración de grupos locales

Capítulo 3 Usando GUIDE. 3.1 Acerca de GUIDE

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

Conciliación bancaria en CheqPAQ Cargado de estado de cuenta

SQL (Structured Query Language)

XPath en el aula. Nieves Carralero Colmenar I.E.S Ramón y Cajal. Albacete ncarralero@jccm.es

MINI MANUAL PARA CREAR FORMULARIOS CON PHP Marzo 2007

Análisis de esquemas XML [1]

INDICE Programación Introducción Capitulo 21 BASIC Capitulo 22. COBOL Capitulo 23 DELPHI Capitulo 24. FORTRAN Capitulo 25.

PLANTILLAS DE DOCUMENTOS EN WORD 2007

MANUAL DE PRACTICUM12 PARA CENTROS EDUCATIVOS ÁMBITO MÁSTER

Tecnología de la Información y la Comunicación. Base de datos. Consultas

Manual de ACCESS Intermedio

Capítulo I. Definición del problema y objetivos de la tesis. En la actualidad Internet se ha convertido en una herramienta necesaria para todas

Tema 7: Programación con Matlab

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

Internet Information Server

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

Objetivos. Contenidos. Revisar los principales conceptos de la lógica de primer orden

4. Modelo Relacional: Manipulación de los datos.

Módulo 9 Sistema matemático y operaciones binarias

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

LAS CONSULTAS ACCESS Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Introducción a la Programación en MATLAB

Base de datos relacional

Unidad 9:GESTIÓN Y ALMACENAMIENTO DE LA INFORMACIÓN EN FORMATOS XML

BASES DE DATOS - Microsoft ACCESS 2007-

Hojas de Estilos XSLT en el aula. Nieves Carralero Colmenar I.E.S Ramón y Cajal. Albacete ncarralero@jccm.es

Transcripción:

TUTORIALES XQuery e-business designer Versión 3.3.x Headquarters C/Doctor Trueta 50-54, 3º 08005 Barcelona, España Tel: +34 932 251 070 Fax: +34 932 217 303 Orense 68, 11º 28020 Madrid, España Tel: +34 917 885 747 Fax: +34 917 885 701 Pza. Alfonso el Magnánimo 1 46003 Valencia, España Tel: +34 963 534 505 Fax: +34 963 944 127 1401 Brickell Av. # 320 33131 Miami, FL, USA Tel: +1 305 503 3380 Fax: +1 305 503 3381 Mariano Escobedo, 543 Despacho 301, Rincon del Bosque CP 11580 México DF Tel: +52 55 5545 2646 www.oasyssoft.com www.ebdcommunity.com ebd@oasyssoft.com ebd es un producto de

INTRODUCCIÓN Introducción 1.1. Qué es XQuery? XQuery, también conocido como XML Query, es un lenguaje creado para buscar y extraer elementos y atributos de documentos XML. La mejor forma de entender este lenguaje es diciendo que XQuery es para XML lo que SQL es para las bases de datos. 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 n-ario de etiquetas XML. En este sentido XQuery es independiente del origen de los datos. Una consulta XQuery podría resolver, por ejemplo, la siguiente pregunta: "Seleccionar todos los libros con un precio menor a 20 euros de la colección de libros almacenada en un documento XML llamado catalogo.xml". 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. XQuery pretende ser el futuro estándar de consultas sobre documentos XML. Actualmente XQuery es un conjunto de borradores en el que trabaja el grupo W3C, por lo que es compatible con XML, Namespaces, XSLT, XPath y XML Schema. Sin embargo, a pesar de no tener una redacción definitiva ya existen o están en proceso numerosas implementaciones de motores y herramientas que lo soportan. XQuery hace uso de XPath, un lenguaje utilizado para seleccionar partes de XML. De hecho, XQuery 1.0 y XPath 2.0 comparten el mismo modelo de datos y soportan las mismas funciones y operadores. e-business designer XQuery 2

XQUERY EN EBD XQuery en ebd La sintaxis en ebd es la siguiente: <ebd:xquery TABLE="tablename" [NAME="queryname"] [VAR="varname"] [STATIC="1"]> XQuery </ebd:xquery> De esta manera conseguimos ejecutar una consulta XQuery contra una Tabla vinculada usando el formato XML. El parámetro NAME definirá el nombre con el que se guardará el HANDLER para poder hacer FETCHROW y poder recorrer el resultado de la expresión como una estructura de registros y campos (array de hashes). El parámetro VAR especifica una variable escalar en la que se almacenará el contenido XML de la respuesta de la query, para poder parsear ese XML manualmente con XMLPARSE. <ebd:set VAR="doc" VALUE="#[eBDDB.xml_document(nombre_tabla)]"/> <ebd:xquery TABLE="slashdot" NAME="datos" VAR="xml"> FOR \$a IN doc("$doc")/rss/channel/item <dato> <nombre>{data(\$a/title)}</nombre> <enlace>{data(\$a/link)}</enlace> </dato> </ebd:xquery> Si se especifica el parámetro STATIC, ebd no interpretará variables ni expresiones dentro de la XQuery, por lo que se podrán usar los caracteres especiales ($,%,etc...) sin necesidad de escaparlos. En XQuery podemos usar <ebd:set> y de la misma manera que si de una Query standard se tratara. e-business designer XQuery 3

Consultas en XQuery 3.1. Reglas generales A continuación, enunciamos una serie de reglas que debe cumplir cualquier consulta escrita en XQuery: FOR y LET sirven para crear tuplas con las que trabajará el resto de las cláusulas de la consulta, y pueden usarse tantas veces como se desee en una misma consulta, incluso dentro de otras cláusulas. Sin embargo sólo puede declararse una única cláusula WHERE, una única cláusula ORDER y una única cláusula. En ebdml hemos de escapar la variable de XQuery, para que ebd no crea que es una variable suya y nos muestre el error: por tanto, la sintaxis correcta será la siguiente: <ebd:set VAR="doc" VALUE="#[eBDDB.xml_document(Tabla_xml)]"/> <ebd:xquery TABLE="Tabla_xml" NAME="nom" VAR="xml"> FOR \$a IN doc('$doc')/*:documento/*:reg <reg> <iden >{data(\$a/*:id)}</iden> < nombre >{data(\$a/*:nombre)}</ nombre > </reg> </ebd:xquery> Ninguna de las cláusulas FLWOR (For, Let, Where, Order by, Return) es obligatoria en una consulta XQuery. Por ejemplo, en una expresión XPath como la que se muestra a continuación, es una consulta válida y no contiene ninguna de las cláusulas FLWOR: doc(("libros.xml")/bib/libro/titulo[/bib/libro/autor/apellido='benítez'] e-business designer XQuery 4

3.2. Funciones de entrada XQuery utiliza las funciones de entrada en las cláusulas FOR o LET o en expresiones XPath para identificar el origen de los datos. Actualmente el borrador de XPath y XQuery define dos funciones de entrada distintas, doc(uri) y collection(uri). La función doc(uri) devuelve el nodo documento, o nodo raíz, del documento referenciado por un identificador universal de recursos (URI). Esta es la función más habitual para acceder a la información almacenada en archivos. La función collection(uri) devuelve una secuencia de nodos referenciados por una URI, sin necesidad de que exista un nodo documento o nodo raíz. Esta es la función más habitual para acceder a la información almacenada en una base de datos que tenga capacidad para crear estructuras de datos XML. XML que utilizaremos para los ejemplos de XQuery e-business designer XQuery 5

3.3. FOR y LET Usando FOR, cada nodo recuperado por la expresión, es vinculado a una única tupla. Por ejemplo, FOR \$b IN doc('informacion.xml')//película/director \$b Recuperaríamos todos los nodos <director> de todas las películas del documento: <director>peter Jackson</director> <director>alejandro Amenabar</director> <director>ethan Coen</director> <director>joel Coen</director> Usando LET todos los nodos recuperados estarán en una única tupla. Por ejemplo, LET \$b := doc('informacion.xml')//película/director \$b Obtendríamos lo siguiente: <director>peter Jackson</director> <director>alejandro Amenabar</director> <director>ethan Coen</director> <director>joel Coen</director> e-business designer XQuery 6

3.4. WHERE Filtra las tuplas producidas por las cláusulas LET y FOR, recuperando únicamente aquellas que cumplan una expresión. Dicha expresión es evaluada para cada tupla. Si su evaluación es falsa, esa tupla será descartada. Ejemplo: FOR \$b IN doc('informacion.xml')//pelicula/director WHERE \$b/../@fechaestreno="19/12/2007" \$b Recuperaría únicamente los directores que hubiesen estrenado película el día 19-12-2007 (suponemos que fechaestreno es un atributo, por eso ponemos @ delante; el /../ es para subir un nivel en el árbol XML donde está la información): <director>peter Jackson</director> <director>alejandro Amenabar</director> 3.5. ORDER Indica, para un conjunto de información, un orden de salida. Por defecto organiza de manera ascendente según el tipo de datos que se esté evaluando. Ejemplo: FOR \$b IN doc('informacion.xml')//pelicula/director ORDER BY \$b/../titulo \$b Recuperaría los directores ordenados por el título de sus películas: <director>alejandro Amenabar</director> <director>ethan Coen</director> <director>joel Coen</director> <director>peter Jackson</director> e-business designer XQuery 7

3.6. Formatea la información de salida. Esto nos ofrece muchas posibilidades, ya que podemos convertir la información recuperada a HTML, PDF o cualquier otro tipo. En los anteriores ejemplos hemos estado utilizando la cláusula para que nos devolviera los resultados entre los tags. 3.7. Expresiones condicionales IF-THEN-ELSE XQuery también admite expresiones condicionales IF-THEN-ELSE. Esta cláusula es útil para dar un formato diferente a la salida dependiendo de la información de esta, es decir, podemos cambiar la estructura de los nodos en los que recuperamos la información según nos convenga por su contenido. Si es usa IF, es obligatorio el ELSE, pero puede ser únicamente ELSE (). Ejemplo: FOR \$b IN doc('informacion.xml')//pelicula/director IF (\$b = "Alenjandro Amenabar") THEN <espanol>{ \$b }</espanol> ELSE { \$b } 3.8. Cuantificadores existenciales EVERY y SOME XQuery dispone de dos cuantificadores existenciales. EVERY: recupera aquellas tuplas en las que todos los nodos cumplan la condición. SOME: recupera aquellas tuplas en las que algún nodo cumpla la condición. Ejemplo: LET \$b := doc('informacion.xml')//pelicula/titulo WHERE SOME \$a in \$b/../director SATISFIES (\$a = "Ethan Coen") <titulos>\$b</titulos> Recuperaría los títulos de las películas en las que algún director fuera "Ethan Coen". <titulos> e-business designer XQuery 8

<titulo>sangre fácil</titulo> <titulo>no es país para pobres</titulo> </titulos> Igual pero con EVERY: LET \$b := doc('informacion.xml')//pelicula/titulo WHERE EVERY \$b in \$b/../director SATISFIES (\$b = "Ethan Coen") <titulos>\$b</titulos> Recuperaría los títulos de las películas en las que todos los directores (es este caso el único) fueran "Ethan Coen". <titulos> <titulo>sangre fácil</titulo> </titulos> 3.9. Operadores y funciones matemáticas Al igual que otros lenguajes, XQuery tiene una serie de funciones y operadores aritméticos para la recuperación de información Matemáticos Comparación Secuencia Redondeo Funciones de agrupación Funciones de cadena Uso general +, -, *, div(*), idiv(*), mod =,!=, <, >, <=, >=, not() union ( ), intersect, except floor(), ceiling(), round() count(), min(), max(), avg(), sum() concat(), string-length(), startswith(), ends-with(), substring(), upper-case(), lower-case(), string() distinct-values(), empty(), exits() e-business designer XQuery 9

3.10. Comentarios Los comentarios en XQuery, a diferencia de XML, van encerrados entre caras sonrientes " (: :) ". <ebd:xquery TABLE="Tabla_xml" NAME="nom" VAR="xml"> (: Soy un comentario :) FOR \$b IN distinct-values(doc('informacion.xml')//pelicula/titulo Order by \$b <titulos>{ \$b }</titulos> </ebd:xquery> La función distinct-values() extrae los valores de una secuencia de nodos y crea una nueva secuencia con valores únicos, eliminando los nodos duplicados. 3.11. Orden de ejecución 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: e-business designer XQuery 10

e-business designer XQuery 11

UTILIDADES Utilidades Podemos usar una extensión para Mozilla Firefox llamada XQuery USE ME (https://addons.mozilla.org/es-es/ firefox/addon/5515) para comprobar sentencias XQuery. Hemos de tener presente que la sintaxis, en este caso, ha de cumplir el estándar del lenguaje, por lo que no deberemos escapar las variables, ni usar el tag <ebd:xquery> e-business designer XQuery 12

APÉNDICE I. XPATH. Apéndice I. XPath. XPath es un lenguaje de expresión utilizado para referenciar nodos de información en un conjunto de datos XML. XQuery utiliza este lenguaje para las cláusulas FOR y LET de una consulta. Las expresiones XPath tienen un comportamiento similar a las expresiones regulares aplicadas al contexto de un conjunto de datos en XML y, más concretamente, al un conjunto de nodos XML en lugar de un conjunto de caracteres. XPath es muy fácil de entender mediante ejemplos. A continuación mostramos algunas expresiones básicas y lo que se obtiene a partir de ellas: /html/body/h1 Selecciona todos los nodos <h1> que son hijos de un nodo <body> que, a su vez, es hijo de un nodo <html> (que es el nodo raíz del árbol XML). El resultado será todos los nodos <h1> que cumplan la anterior condición. //h1 Selecciona todos los nodos <h1> que aparezcan en cualquier posición del árbol XML. La doble barra indica cualquier profundidad. count(//libro) Devuelve el número de nodos <libro> que aparecen en el documento en cualquier posición. //libro[autor = "Hunter"] Devuelve todos los nodos <libro> que aparezcan en el documento en cualquier posición y que tengan un nodo hijo <autor> con el valor "Hunter". Los corchetes indican un filtro para seleccionar los resultados que cumplan una determinada condición. //libro[@año > 1999] Devuelve todos los nodos <libro> que tengan un atributo "año" con un valor superior a 1999. La arroba indica que "año" no es un hijo (una etiqueta) sino un atributo de la etiqueta libro. //libro[@paginas] Devuelve todos los nodos <libro> que tengan un atributo "paginas", independientemente del valor de ese atributo. //libro/@paginas Devuelve todos los atributos pagina de los nodos <libro>. e-business designer XQuery 13

APÉNDICE I. XPATH. (i b) Devuelve todos los nodos <i> o todos los nodos <b> que encuentre en el nodo contexto. Por defecto el nodo contexto es el nodo raíz del documento. XPath soporta el uso de predicados, los cuales son condiciones booleanas que permiten seleccionar un subconjunto de los nodos referenciados. La expresión se evalúa por cada nodo encontrado y según sea cierta o falsa, el nodo se selecciona o se descarta. A continuación se muestra un ejemplo: (//servlet //servlet-mapping) [servlet-name = $servlet] Devuelve todos los nodos <servlet> o <servlet-maping> que tengan un hijo llamado <servelt-name> cuyo valor coincida con el valor de la variable $servlet. Si el predicado contiene un literal numérico, se trata como si fuera un índice, tal y como muestra el siguiente ejemplo: doc("libros.xml")/bib/libro/autor[1] Esta expresión devuelve sólo el primer nodo autor que encuentre para cada nodo libro. (doc("libros.xml")/bib/libro/autor)[1] Esta expresión es igual a la anterior, excepto por los paréntesis. Estos paréntesis fuerzan a que se evalúe primero el recorrido por los nodos autor de cada libro, y después se aplique el predicado, por lo que el resultado de esta expresión será el primer autor que aparezca en el archivo "libros.xml". //key[. = "Tiempo total"] Devuelve todos los nodos <key> que tengan un valor de "Tiempo total.". El carácter "." representa el nodo contexto, que tiene una función similar al operador "this" en lenguajes como C++ o Java. (//key)[1]/texto Devuelve los nodos <texto> del primer nodo <key> del documento. e-business designer XQuery 14

Headquarters C/Doctor Trueta 50-54, 3º 08005 Barcelona, España Tel: +34 932 251 070 Fax: +34 932 217 303 Orense 68, 11º 28020 Madrid, España Tel: +34 917 885 747 Fax: +34 917 885 701 Pza. Alfonso el Magnánimo 1 46003 Valencia, España Tel: +34 963 534 505 Fax: +34 963 944 127 1401 Brickell Av. # 320 33131 Miami, FL, USA Tel: +1 305 503 3380 Fax: +1 305 503 3381 Mariano Escobedo, 543 Despacho 301, Rincon del Bosque CP 11580 México DF Tel: +52 55 5545 2646 www.oasyssoft.com www.ebdcommunity.com ebd@oasyssoft.com ebd es un producto de