Sistema de Información XML
Tarea Global
Sistema de información XML
Partiendo del enlace indicado en el enunciado pulsamos sobre “Download eXistdb”.
Elegimos la versión que queramos instalar, en este caso la versión estable nos proporciona todo lo necesario. Esto nos lleva a la página de jfrog.
Elegimos el jar para descargar, le damos permisos de ejecución y ejecutamos el jar.
Pulsamos en siguiente, elegimos dónde queremos que se instale y pulsamos siguiente sobre los 9 pasos de la instalación. Al acabar, ejeuctamos eXist desde el dash de Ubuntu y ya la tenemos corriendo.
2)Crear nueva colección de datos
Desde el icono de la barra de menú (Ubuntu), pulsamos con el botón derecho y seleccionamos “Open Dashboard” que nos abrirá un navegador con la siguiente dirección:
http://localhost:8080/exist/apps/dashboard/index.html
Para añadir una nueva colección pulsamos sobre collections:
Introducimos usuario/password y ya estaremos en el Collection Browser:
Pulsando el tercer icono nos permitirá crear una colección que llamaremos “coches”.
Después pulsamos el último símbolo para subir los ficheros xml generados en el siguiente apartado.
Generamos el scheme con los requisitos indicados en el enunciado:
A destacar:
marca tiene una restricción de tipo pattern en el que nos permite elegir sólo uno de los 3 valores indicados
potencia es un entero que no sea negativo, por lo que su tipo es xs:nonNegativeInteger
plazas es un integer con una restricción de minInclusive y maxInclusive ya que tiene que ser entre 5 y 10 plazas
num_puertas es un integer con una restriccion de minInclusive y maxInclusive ya que tiene que tener entre 3 y 6 puertas
Generamos el xml con los datos y comprobamos que validen respecto al esquema anterior.
Por último, seleccionamos el fichero para subir como habíamos indicado en el apartado anterior.
Generamos el fichero de transformación XSL.
A destacar:
Se tranformará a html, de ahí el tag <xsl:output method=”html”/>
Se necesita tener una cabecera y una tabla con los datos. Por tanto se incluyen los tag <h2> y <table>
Se deben aplicar estilos a la cabecera y a los datos. Se ha elegido un css de bootstrap ya que nos permite poner todo más bonito aplicando clases predefinidas. A la cabecera la hemos centrado aplicando la clase text-center. Mientras que a la tabla le hemos aplicado “table table-striped table-bordered” para que tenga formato de tabla, a rayas y con bordes. Los nombres de lsa columnas le hemos aplicado “text-primary” para que salga resaltado.
La salida tras aplicar este documento a los datos anteriores es:
Desde el dashboard pulsamos en el siguiente botón para manejar las queries:
A continuación pulsamos sobre new XQuery:
y escribimos nuestra xquery.
La cláusula for indica que queremos iterar sobre todos los coche dentro del elemento raíz coches.
La cláusla where nos indica que queremos que el elemento coches que vamos a recupera debe tener el subelemento num_puertas igual a 5 y que la marca sea BMW.
La cláusula where nos devuelve aquellos coches que cumplan la condición anterior, en este caso, sólo uno:
Pulsando de nuevo en new Xquery podemos generar un xupdate.
La clásula for indica la colección de elementos sobre la que vamos a iterar y la cláusula where la condición. (Que tenga un subelemento marca con valor ‘Audi’). Sobre todos los elementos que se recuperen aquí, vamos a actualizar su subelemento potencia con un valor de 200.
Para comprobar el resultado, en buffers → coches.xml observamos lo siguiente:
Si quieres todo el código del ejemplo lo tienes aquí!
[sociallocker]
xml-code.zip
[/sociallocker]