Unidad 9:GESTIÓN Y ALMACENAMIENTO DE LA INFORMACIÓN EN FORMATOS XML JJ Taboada León IES San Sebastián, Departamento de Informática LENGUAJE DE MARCAS Y SGI Curso 2012 / 2013 XML PARA EL ALMACENAMIENTO DE LA INFORMACIÓN(I) XML permite la representación de la información de forma rápida e intuitiva Los SGBD actuales permiten trabajar con modelos y representaciones en formato XML Mejor utilizar BD XML nativas MODELOS BD XML nativas Descripción Centrado en el almacenamiento de los datos Permite utilizar el modelo relacional dentro de BD XML(se guardan tuplas) Centrado en el documento Se guradan documentos XML XML PARA EL ALMACENAMIENTO DE LA INFORMACIÓN(II) BD XML nativas SGBD eXcelon XIS Lite TEXTXML dbXML eXist BaseX Qizq Oracle Microsoft SQL server MySQL PostgresSQL Interbase SapDB SQLite LENGUAJES DE CONSULTAS Y MANIPULACIÓN SQL(Structure Query Language) para BD relacionales Creación y borrado de tablas Inserción, modificación y borrado de tuplas Ejecución de búsquedas mediante consultas Xquery para documentos XML Extracción de datos de un documento Actualización de datos(inserción, reemplazo y borrado) ANÁLISIS DE UN DOCUMENTO XML Se crea un árbol de nodos(elemento raíz e hijos) Tipos de nodos: Nodo Raíz (/) primer nodo del documento Nodo elemento cualquier elemento del documento Nodo texto caracteres del documento que no están marcados con alguna etiqueta. Nodo atributo etiquetas que completan la información de un elemento Nodos de comentarios y de instrucciones de proceso El recorrido del árbol los hacemos con XPATH Xpath es utilizado en XQuery XQuery ¿Qué es XQuery? (I) XQuery es a XML lo que SQL es a las tablas de base de datos. XQuery fue diseñado para consulta de datos XML. Ejemplo for $x in doc(“libros.xml")/libreria/libro where $x/price>30 order by $x/title return $x/title ¿Qué es XQuery? (II) XQuery es el lenguaje para consultar datos XML XQuery para XML es como SQL para bases de datos XQuery se basa en expresiones XPath XQuery es soportado por todos los principales bases de datos XQuery es una Recomendación del W3C ¿Qué utilidad tiene? XQuery se puede utilizar para: Extraer información a utilizar en un servicio Web Generar informes de resumen Transformación de datos XML a XHTML Buscar en la Web los documentos de información relevante QIZX STUDIO Para aprender XQuery vamos a utilizar la herramienta QIZX STUDIO: Es un motor de DB XML para el almacenamiento de documentos XML, búsquedas y transformaciones Está orientado a consulta. No necesita DTD o schema Soporta XQuery/XPath2 Soporta Windows XP, Vista, 7-Linux 2.4+ -Mac OS X 10.5+ Actividades: Descargar la edición gratuita (Free Engine Edition) •Descomprimimos el fichero .zip descargado, buscamos la carpeta “bin” y dentro ejecutamos “qizxstudio.bat” •Crear un grupo de librerias “GrupoLibreriasXML” •Crear un Librería o Base de Datos “BD_cursos” QIZX STUDIO (vista general) Ejemplos de uso de Xquery (I) Crearemos un nuevo documento XML y lo añadimos en la base de datos de Qizx Studio Se trata de almacenar información de una empresa dedicada a la impartición de cursos de informática: Nombre del curso Precio del curso Número de horas Número de plazas disponibles Fecha de comienzo del curso Fecha de finalización del curso Nombre del docente que imparte el curos Aula donde se imparte el curso Ejemplos de uso de Xquery (II) <?xml version="1.0" encoding="ISO-8859-1"?> <cursos> <curso id=“1"> <nombre>Oracle</nombre> <precio moneda=“euro”>800</precio> <plazas>15</plazas> <comienzo>1/6/2012</comienzo> <fin>29/6/2012</fin> <docente>Anselmo López López</docente> <aula> TI2>/aula> </curso> cursos.xml ………. </cursos> Importamos el documento cursos.xml en la base de datos BD_cursos Consultas simples(I). ejemplos Consulta Orden Extraer todo el documento almacenado doc(“cursos.xml”) Extraer todos los cursos doc("cursos.xml")//cursos/curso Extraer los docentes doc("cursos.xml")//cursos/curso/docente Extraer el nombre de todos los cursos doc("cursos.xml")//cursos/curso/nombre Extrer información del curso “PHP” doc("cursos.xml")//cursos/curso[nombre="PHP"] Extraer información del curso con id “2” doc("cursos.xml")//cursos/curso[@id="2"] Extraer información de los cursos que comienzan en Septiembre doc("cursos.xml")//cursos/curso[comienzo >= "1/9/2012"] Actividades: 1. Completar el documento cursos.xml con 5 cursos más 2. Realizar cada una de las consultas que aparecen el la tabla anterior de ejemplos Consultas con expresiones FLWOR for • Permite seleccionar los nodos que se quieren consultar y los guarda en una variable precedida por $ • Ejemplo: for $cu in doc("cursos.xml")//cursos/curso return $cu/nombre • Es opcional. Establece una nueva variable sobre el mismo u otro documentos xml let where Order by return • Ejemplo: for $cu in doc("cursos.xml")//cursos/curso let $nombre:=$cu/nombre return $nombre • Permite establecer una condición sobre la variable indicada en “for” y “let” • Ejemplo: for $cu in doc("cursos.xml")//cursos/curso where $cu/nombre="DiseñoWEB" return $cu • Define el orden de presentación de los resultados Ejemplo: for $cu in doc("cursos.xml")//cursos/curso order by $cu/nombre return $cu • Permite devolver un valor concreto de los resultados de las anteriores clausuala (uno por nodo) Ejemplos de consultas con FLWOR(1) Consulta_Flwor_1 Cursos que se imparten en el taller de informática 4 “TI4” Ejemplos de consultas con FLWOR(2) Consulta_Flwor_2 función data() Cursos que se imparten en el taller de informática 4 “TI4” pero sin etiquetas XML Ejemplos de consultas con FLWOR(3) Consulta_Flwor_3 Infromación de los Cursos que se imparten en el taller de informática 2 “TI2” y cuyo precio sea igual o menor de 800€ Ejemplos de consultas con FLWOR(4) Consulta_Flwor_4 Docentes que imparte cada curso Ejemplos de consultas con FLWOR(5) Consulta_Flwor_5 Número de cursos que se imparte Ejemplos de consultas con FLWOR(6) Consulta_Flwor_6 salida en HTML Tabla HTML que nos muestre el curso, el docente y fecha de comienzo, ordenado por fecha Ejemplos de inserción con FLWOR(7) Clausulas insert node ….. before doc(“documneto.xml”)//raiz/nodo[1] Inserta antes del primer nodo insert node ….. as last into doc(“documentoxml”)//raiz Inserta al final del documento Insercion_Flwor_7 Añadir un nuevo curso de Java Script de 30 horas el 1 de enero de 2013 impartido por Valle Taboada Ejemplos de modificación con FLWOR(8) Modificación replace value of node Moficiación en el primer nodo doc(“documneto.xml”)//raiz/nodo[1]/etiqueta1 with “nuevo valor” , replace node doc(“documneto.xml”)//raiz/nodo[1]/etiqueta2 with “nuevo valor” Modificacion_Flwor_8 Modificar el nombre del curso con id 1 por ajax Ejemplos de borrado con FLWOR(9) Borrar delete doc(“documneto.xml”)//raiz/nodo[1] Borrar_Flwor_9 Borrar el curso con id “4” Borra el primer nodo Salvar consultas y exportar librerías Xquery permite salvar las consultas que vamos realizando File/Save Xquery File As…. Xquery también permite exportar los resultados de las operaciones que realizamos en la base de datos a un fichero con formato xml o html Icono Save results de la ventana de la derecha Actividades http://es.hotusa.com/servicios-a-agencias/ag_online.htm Actividades: 1. Realizar cada uno de los ejemplos sobre consultas, insercción, modificación y borrado mostrados anteriormente 2. Tomado como referencia los archivos xml que aparecen en la siguiente dirección crear varios nodos con datos ficticios y realizar distintas consultas con salida en HTML http://es.hotusa.com/servicios-a-agencias/ag_online.htm 3. Tomado como referencia los archivos xml de acciones formativas que aparecen en la siguiente dirección crear varios nodos con datos ficticios y realizar distintas consultas con salida en HTML http://empresas.fundaciontripartita.org/app/xml_formato2011.as px?AspxAutoDetectCookieSupport=1