Home UC3M
Home IT
Home / Docencia / I. Telecomunicación / Sistemas de Información
anteriorsiguiente

Práctica Tema 11 (II)

Fecha: 13 de Diciembre de 2005
Conceptos: Hojas de estilo, transformación, XML, XSLT, DTD
Soluciones: practica11b-sol.zip
Profesores: M. Carmen Fernández Panadero, Norberto Fernández


 INTRODUCCIÓN

En esta práctica los ejercicios se centran en la conversión de documentos XML a otros formatos mediante el uso de hojas de estilo XSLT

Objetivos
  • Comprender la estructura de una hoja de estilo XSLT
  • Comprender que una hoja de estilo es a su vez un documento XML
  • Comprender la sintaxis de las hojas de estilo
  • Ser capaz de crear un doucumento HTML que represente a un documento XML dado.
  • Ser capaz de crear una hoja de estilo XSLT que haga la conversión de un documento XML a un documento HTML.
  • Ser capaz de utilizar un parser (analizador) de XSLT para realizar la conversión de un documento XML en un documento HTML
 EJERCICIO 1: Comprensión y utilización de una hoja de estilo
Objetivos
  • Comprender la sintaxis y el funcionamiento de una hoja de estilo sencilla XSLT
  • Comprender la estructura de una plantilla y ser capaz de seleccionar el contenido de los elementos y atributos de un documento XML
  • Ser capaz de aplicar una plantilla de forma recursiva para todos los elementos iguales de un documento XML.
  • Ser capaz de utilizar un parser para generar un documento HTML a partir de un documento XML y una hoja de estilo.

  • En este ejercicio vamos a ver algunas de las etiquetas básicas definidas en la especificación de XSLT para transformar un documento:
    • Para definir una plantilla <xsl:template match="elementoSeleccionado"> </xsl:template>
    • Para seleccionar un elemento o atributo en un documento XML y devolver su valor:
      • <xsl:value-of select="elementoSeleccionado"/>
      • <xsl:value-of select="@atributoSeleccionado"/>
    • Para aplicar una plantilla a:
      • un elemento concreto: <xsl:apply-templates select="elementoSeleccionado" />
      • todos los elementos que se encuentran por debajo del actual en la jerarquía: <xsl:apply-templates/>

Apartado 1: Plantillas básicas

  • En la siguiente figura puedes ver un ejemplo sencillo de transformación de un documento XML en un documento HTML. En este caso sólo hay una plantilla para el elemento "document" , su contenido coíncide con el del documento HTML salvo en el contenido de la etiqueta <p> donde hemos sustituido la frase literal "mi primer parrafo" por una etiqueta que selecciona el contenido del elemento párrafo en el documento XML.




    • Prueba la transformación indicada en el ejemplo anterior. Para ello:
      • Abre el notepad y crea un fichero de texto llamado documento1.xml con el contenido que indica la figura anterior en el recuadro "origen". Acuérdate de añadir la declaración de documento XML al principio del documento.
      • Del mismo modo crea un fichero de texto llamado documento1.xsl con el contenido de la hoja de estilo.
      • Para realizar la conversión necesitarás un parser de XSLT. Para esta práctica puedes utilizar el xt que está instalado en los equipos del laboratorio y que también puedes descargar aquí o en esta dirección: http://www.jclark.com/xml/xt.html
      • Para utilizarlo desde una ventana de MSDOS ejecuta el xt utilizando como parámetros los ficheros documento1.xml y documento1.xsl que has creado así como el nombre del fichero que quieras obtener como resultado:

        c:\tmp> xt documento1.xml documento1.xsl doc1.html

    • Abre el fichero doc1.html generado por el xt para comprobar si el resultado es el esperado.

    Apartado 2: Aplicación de plantillas a elementos que se repiten en el documento

  • En la siguiente figura puedes ver lo que ocurre cuando un elemento se repite varias veces en la jerarquía como el elemento párrafo. En lugar de sustituir el contenido cada vez que aparece por <xsl:value-of select="parrafo">. Creamos una nueva plantilla en la que hacemos la sustitución y luego hacemos una llamada a la plantilla con el elemento <apply-templates select="parrafo"> que lo que hace es aplicar la plantilla tantas veces como encuentre el elemento "parrafo" dentro del documento XML.
  • Crea los ficheros de texto documento2.xml y documento2.xsl que indica la figura y prueba su funcionamiento haciendo la transformación a doc2.html con el xt de forma análoga a como lo hiciste en el apartado anterior.:

    c:\tmp> xt documento2.xml documento2.xsl doc2.html

  • Observa que:
    • cuando la etiqueta <xsl:value-of/> estaba dentro de la plantilla del documento poníamos como valor del atributo select "parrafo" mientras que ahora como la etiqueta <xsl:value-of> esta dentro del propio elemento párrafo hemos puesto como valor del atributo select "."
    • Sustituye la línea <xsl:value-of select="."/> por <xsl:apply-templates/>. Observa que el resultado obtenido al aplicar la hoja de estilo es el mismo. Esto es así porque cuando nos encontramos en un nodo hoja dentro de la jerarquía del documento la aplicación de la plantilla <xsl:apply-templates/>se reduce a sustituir esa línea por el contenido del elemento actual.



  • Apartado 3: Selección del contenido de un atributo

  • En la siguiente figura puedes ver cómo se selecciona un atributo dentro de un documento XML. Crea los ficheros documento3.xml y documento3.xsl y realiza la transformación como en los dos ejemplos anteriores.

    c:\tmp> xt documento3.xml documento3.xsl doc3.html




  •  EJERCICIO 2: Creación de una hoja de estilo
    Objetivos
    • Conocer la sintaxis básica de las tablas y listas en HTML
    • Ser capaz de generar una hoja de estilo que convierta un documento XML que contenga:
      • elementos únicos
      • elementos repetidos y
      • atributos

      en un documento HTML

    • Descarga en un directorio temporal el fichero persona2.xml que representa una lista de contactos.
    • Repasa los ejercicios 6 y 12 de la práctica 10 que hablaban de listas y tablas en HTML y crea un fichero HTML que al abrirlo en el navegador presente este aspecto:

    • Crea una hoja de estilo persona2.xsl que permita convertir el documento persona2.xml en persona2.html utilizando el parser xt del mismo modo que lo utilizaste en el ejercicio anterior. Para ello te recomendamos que:
      • Abre el documento HTML que acabas de generar y añádele la cabecera correspondiente para convertirlo en un documento xslt.
      • Crea las etiquetas de comienzo y fin de plantilla para el elemento "personas" que es el primero de la jerarquía y deja todo el código HTML en su interior.
      • A continuación ve sustituyendo cada uno de los valores literales del código HTML por una etiqueta xsl (ejemplo sustituiríamos John por <xsl:value-of select="nombre"/>
      • Cuando un elemento se repita varias veces crea una plantilla independiente igual que hicimos en el ejercicio anterior para el elemento "parrafo".
      • Prueba la hoja de estilo que acabas de generar utilizando el parser:

        c:\tmp> xt persona2.xml persona2.xsl prueba.html

        para comprobar si el resultado es el esperado.
      • Una vez que obtengas el resultado esperado añade nuevas personas al documento XML y vuelve a aplicar la hoja de estilo, comprobarás que la página HTML se genera correctamente sin necesidad de retocar la hoja de estilo.
      • Hasta ahora hemos hecho todas las pruebas con documentos XML bien formados (sin dtd). Las hojas de estilo también funcionan para documentos válidos, si quieres probarlo puedes hacerlo utilizando la hoja de estilo que acabas de generar con estos dos documentos:
    Última actualización:

    Localización | Personal | Docencia | Investigación | Novedades | Intranet
    inicio | mapa del web | contacta