FSD Práctica XML, DTD, XML Schema, CSS, XSLT Tipo de entrega: por grupos de prácticas Fecha límite: sesión de laboratorio del 11 de Mayo Lugar: Atenea Objetivos de la práctica: • • • • • • • Crear documentos XML bien formados Crear documentos XML válidos (XML Schema) Añadir estilos a un documento XML (CSS) Entender qué es XSL y su relación con XML Entender qué es XLST Interpretar documentos XSLT Generar documentos XSLT Resultados a entregar: • Sesión del 11 de Mayo evaluación en clase. Estudio Previo 1. Identifica qué línea de código es necesario añadir en un documento XML para aplicar un XML Schema propio al documento XML. 2. Crea un documento XML para el siguiente pedido que ha recibido por correo electrónico una empresa que se dedica a la venta de herramientas para jardinería: "Hola, necesito una cortadora de cesped para mi jardín de esas que anuncian en oferta, me gustaría que fuera uno de esos modelos eléctricos, pues las de gasolina contaminan mucho. Me llamo Roberto Movilla, la cortadora la tendrán que enviar a Albacete, la dirección es Plaza de la Duquesa 12, la recogerá mi esposa que se llama Alicia Abad. Ahora que lo pienso también necesitaré 3 podadoras para los setos. Les paso mi dirección de aquí para lo referente al pago, es General Ricardos 56, aquí en Madrid. Es urgente, por favor, el césped está muy alto." La fecha del pedido es el 20 de octubre del 99. El empleado que se encarga del pedido ha comprobado algunos datos necesarios: el código postal de la dirección de Albacete es 05020 y el de la de Madrid 28055; también ha consultado el catálogo de productos y ha averiguado que la cortadora vale 148.95 euros y su código de producto es 872-AA, aunque no sabe si es o no eléctrica; una podadora vale 7.98 y su código es 926-FH. 3. Compara tu solución al ejercicio anterior con la solución propuesta en el ejercicio “Creación de documentos XML” del tutorial “Apuntes de XML” de Diego Arranz Hernando (http://www.programacion.com/tutorial/apuntesxml/12/#ejercicios-ejercicio1) (Trae tu solución y la comparación a la sesión de laboratorio en papel) 4. Crea un documento DTD para el documento XML del punto 3. 5. Compara tu solución al ejercicio anterior con la solución propuesta en el ejercicio “DTDs” Y de del tutorial “Apuntes de XML” de Diego Arranz Hernando (http://www.programacion.com/tutorial/apuntesxml/12/#ejercicios-ejercicio2) 6. Construir un esquema XML para la siguiente DTD: <!ELEMENT Libro (Titulo, Contenido, Copyright)> <!ATTLIST Libro xmlns CDATA #REQUIRED > <!ELEMENT Titulo (#PCDATA)> <!ELEMENT Contenido ((Capitulo+, Separacion?)+)> <!ELEMENT Capitulo (Tema, Seccion+)> <!ATTLIST Capitulo materia (XML|Java) "Java" > <!ELEMENT Tema (#PCDATA)> <!ELEMENT Seccion (#PCDATA)> <!ATTLIST Seccion apartados CDATA #REQUIRED dificil (si|no) "no" > <!ELEMENT Separacion EMPTY> <!ELEMENT Copyright (#PCDATA)> y probarlo con este documento: <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> <!DOCTYPE Libro [ <!ENTITY OReillyCopyright SYSTEM "copyright.txt"> ]> <Libro xmlns="http://www.mislibros.com/libros/javaxml" xmlns:Catalogo="http://www.mislibros.com/catalogo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mislibros.com/libros/javaxml libro.xsd"> <Titulo>Java y XML</Titulo> <Contenido> <Capitulo materia="XML"> <Tema>Introducción</Tema> <Seccion apartados="7">Qué es</Seccion> <Seccion apartados="3">Cómo se usa</Seccion> </Capitulo> <Capitulo materia="XML"> <Tema>Creando XML</Tema> <Seccion apartados="0">Un documento XML</Seccion> <Seccion apartados="2">La cabecera</Seccion> <Seccion apartados="6">El contenido</Seccion> </Capitulo> <Capitulo> <Tema>Analizando XML</Tema> <Seccion apartados="3">Preparación</Seccion> <Seccion apartados="3" dificil="true">SAX</Seccion> <Seccion apartados="9" dificil="true">Manejadores</Seccion> <Seccion apartados="0">Una forma mejor de cargar el analizador</Seccion> </Capitulo> <Separacion/> <Capitulo materia="Java"> <Tema>JDOM</Tema> <Seccion apartados="2">Introducción</Seccion> <Seccion apartados="4" dificil="true">DOM&amp;JDOM</Seccion> </Capitulo> </Contenido> <Copyright>&OReillyCopyright;</Copyright> </Libro> 7. Compara tu solución al ejercicio anterior con la solución propuesta en el ejercicio “Schema” Y de del tutorial “Apuntes de XML” de Diego Arranz Hernando (http://www.programacion.com/tutorial/apuntesxml/12/#ejercicios-ejercicio2) 8. Identifica qué línea de código es necesario añadir en un documento XML para aplicar una hoja de estilos al documento XML. 9. Repasa el manual “css.pdf” del material adicional del libro “Cómo programar en Java” de JDeitel, Harvey M. y Deitel, Paul J. Quinta edición. Puedes descargarte el manual del Campus o bien consultarlo en el CD que acompaña al libro. 10. Estudio del manual “XSL: Extensible StyleSheet Language Transformation (XSLT)” (jws1_05PDF.pdf incluido dentro de los archivos de la práctica y facilitado por Pearson/Prentice Hall) 11. Abre con el navegador detenidamente. los archivos planner.xml y conditional.xsl y analízalos 12. Abre con el navegador el archivo results.html visualiza su código fuente y analízalo. 13. Elimina el archivo results.html de tu directorio de trabajo 14. Compila y ejecuta Transform.java (aplicación facilitada por Pearson/Prentice Hall y que se explica dentro del manual del apartado 1) utilizando como argumentos planner.xml, condicional.xsl y results.html (apartado 5.6 del manual del apartado 1) 15. Comprueba que se ha generado de nuevo results.html, ábrelo con el navegador, visualiza su código fuente y analízalo. Ejercicio Define una base de datos en XML que permita almacenar información de películas. El fichero de la base de datos (fichero XML) lo denominaremos peliculas.xml. Por cada película queremos que la base de datos contenga la siguiente información: 1. 2. 3. 4. Nombre de la película: Ha de tener un nombre único y que el campo sea obligatorio Director de la película: Puede tener uno o más directores y que el campo sea obligatorio. Actores: Puede tener uno o más actores y que el campo sea obligatorio. Año: Tendrá el año en que se hizo como campo obligatorio. Se ha de controlar que el año tan solo tenga dígitos numéricos. 5. Género: (terror, acción,…) Se ha de clasificar dentro de un género como campo obligatorio. El género tan solo puede tener un valor. 6. Oscar obtenidos: Puede tener cero o algún oscar. EL campo es opcional y tendrá el valor por defecto 0. Esta base de datos se debe compartir entre diferentes usuarios. Para que su gestión sea correcta, es decir, las altas se hagan estrictamente siguiendo el formato definido y que se cumplan todas las restricciones, se propone definir un DTD y un Schema correcto. Práctica XML, DTD y Schema Se pide que definas un fichero DTD y un fichero Schema para la base de datos y te asegures que ésta sea valida conforme al Schema o DTD definidos. Define un juego de pruebas para demostrar que el fichero peliculas.xml esta bien formado (cumple la sintaxis xml) y es válido (cumple la sintaxis DTD y Schema). Práctica XML i CSS Para que la presentación del contenido de la base de datos sea más clara, proponemos que se defina una hoja de estilo. En esta hoja de estilo se ha de indicar por cada “tag” definido en la base de datos; por ejemplo un tipo de letra, color y tamaño pero se valorará la creatividad. Se deja el estilo libre. Práctica XML i XSLT Realiza las siguientes búsquedas en la base de datos peliculas.xml: 1. Por título de la película. Dado un título nos retornará toda la información asociada a la película en cuestión. Puede existir más de una entrada a la base de datos por título. 2. Por director de la película. Dado el nombre de un director, nos retornará la lista de películas que ha dirigido ordenadas por género. Además, dentro de un género, las películas estarán ordenadas por año Define dos ficheros de transformación: titulo.xsl y director.xsl, que permitan realizar las consultas anteriores. Aplica las transformaciones a peliculas.xml y muestra el resultado en tu navegador. Los ficheros de transformación generarán ficheros html.