sábado, mayo 10, 2014

Mi primer XSLT


XSLT es un lenguaje que nos permite transformar documentos XML de un formato a otro. Por ejemplo transformar documentos XML en documentos XHTML u otros documentos XML.
Para crear nuestro primer XSLT lo primero que tenemos que hacer es escribir nuestro fichero XML. En el caso de este ejemplo vamos a construir un documento de libros como vemos a continuación:
  1. <?xml version="1.0" encoding="iso-8859-1"?>
  2. <libros>
  3. <libro>
  4. <titulo>Fuente Ovejuna</titulo>
  5. <autor>Lope de Vega</autor>
  6. <isbn>84-9815-002-7</isbn>
  7. </libro>
  8. <libro>
  9. <titulo>La Celestina</titulo>
  10. <autor>Fernando de Rojas</autor>
  11. <isbn>84-96390-96-9</isbn>
  12. </libro>
  13. ...
  14. </libros>
Lo que vamos a hacer mediante el XSLT es obtener información del documento XML y crear un documentoXHTML donde se vean dichos datos.
Para construir el documento XSLT lo primero que tenemos que saber es que, este, es a su vez otro documento XML. Por lo tanto, la primera línea que nos encontraremos será la definición del XML.
  1. <?xml version="1.0" encoding="iso-8859-1"?>
Lo siguiente es empezar a definir la hoja de estilos y el namespace asociado
  1. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
En todo documento XSLT, su cuerpo, es formado por las plantillas. Estas nos indicaran a partir de que elemento del documento XML vamos a empezar a trabajar. Para nuestro ejemplo, y ya que vamos a pintar en pantalla el primer libro y el primer autor, nos posicionaremos dentro de la estructura libros dela siguiente forma:
  1. <xsl:template match="libros">
El propio documento XSLT combina sentencias de transformación con código HTML. Por lo que encontraremos a continuación es un documento HTML.
  1. <HTML>
  2. <BODY>
  3. <H1> Mi primer documento XSLT </H1>
  4.  
  5. ...Código XSLT...
  6.  
  7. </BODY>
  8. </HTML>
Aunque las sentencias del XSLT son bastantes, la que nosotros necesitamos conocer en este momento es la que nos ayuda a obtener el valor de una etiqueta XML. Cabe indicar que todas las etiquetas XSLT empiezas por xsl que es el namespace definido anteriormente.
Así, para recuperar el valor de una etiqueta usamos xsl:value-of. Como atributo de esta etiqueta encontramosselect. El cual, nos sirve para seleccionar el nodo (elemento) del cual queremos extraer su valor:
  1. <xsl:value-of select="libro/titulo"/>
  2. <xsl:value-of select="libro/autor"/>
Tanto en el template con el atributo match, como en la etiqueta xsl:value-of con el atributo select estamos utilizando valores XPath. Estos lo que vienen a reflejar, en grandes rasgos, son elementos dentro del árbolXML.
Lo último que nos quedará hacer es reflejar en el documento XML la relación con su fichero de transformación. Para ello utilizamos la siguiente línea dentro del fichero XML:
  1. <?xml-stylesheet type="text/xsl" href="MiPrimerXSLT.xsl"?>
Aunque la potencia del XSLT es muy grande, nos vamos a encontrar que hay navegadores que no lo soportan. En el grupo de los navegadores que si lo soportan encontramos a FireFox, Internet Explorer 6,... y en el grupo de los que no Opera 8, Internet Explorer 5,...
Seguro que en el futuro, todos los navegadores incluirán el soporte de este potente lenguaje de transformación.

No hay comentarios: