Está en la página 1de 4

XML y XSL para generar HTML

Una breve introduccin Teniendo en cuenta la definicin de los siguientes conceptos:

XML (Extensible Markup Language): Sencillo lenguaje de marcado para estructurar los datos en forma de rbol. XSL (Extensible Stylesheet Language): lenguaje transformar los datos XML en un nuevo documento. de marcas para

XSLT (XSL Transformations): lenguaje de marcas que describe la forma en la que XSL toma un documento XML (denominado fuente) y lo transforma en una versin completamente diferente del documento (denominado rbol resultado) basndose en los filtros y patrones que se incluyen en la hoja de estilos. En definitiva, le da el formato visual al documento. Xpath (XML Path Language): es el lenguaje utilizado para direccionar fragmentos de documentos XML. Es utilizado para describir expresiones y caminos locales que nos permiten crear transformaciones XSL avanzadas.

Podemos decir en resumen, que a travs de un archivo de datos en formato XML (y una hoja de estilo XSL se puede generar un documento HTML bien formado, como se representa en la imagen siguiente :

Documento XML Documento XSL Procesado r XSL

Documento HTML, PDF...

Como ventaja principal de este formato, optemos una estructura en la que se separan los datos (documento XML) de su forma de presentacin (documento XSL) al cliente. No se ha de confundir un XSL con un CSS, ya que este ltimo lo nico que hace es decorar el HTML con una serie de reglas, mientras que con el procesador XSL toma como fuente el documento XML, lo examina, y segn sus instrucciones lo transforma en un documento nuevo. Por otra parte, se ha de tener en cuenta que el XSL puede procesarlo el navegador cliente o puede ser procesado por la parte del servidor, llegando solo HTML al navegador. Ejemplo inicial Un sencillo ejemplo podra ser el siguiente:

Archivo XML de datos a procesar por la hoja XSL


Pgina 1

<?xml version="1.0" encoding="iso-8859-1"?> <notas> <alumno convocatoria="Ext"> <nombre>Carlos</nombre> <apellidos>Snchez</apellidos> <num-matricula>j404</num-matricula> <nota-teoria>8.0</nota-teoria> <nota-practica>7.0</nota-practica> <nota-final>4.0</nota-final> </alumno> <alumno convocatoria="Jun"> <nombre>Pedro</nombre> <apellidos>Jimenez</apellidos> <num-matricula>j405</num-matricula> <nota-teoria>8.0</nota-teoria> <nota-practica>7.0</nota-practica> <nota-final>6.0</nota-final> </alumno> <alumno convocatoria="Jun"> <nombre>Bernad</nombre> <apellidos>Perez</apellidos> <num-matricula>j406</num-matricula> <nota-teoria>9.0</nota-teoria> <nota-practica>3.0</nota-practica> <nota-final>7.0</nota-final> </alumno> </notas>

Archivo XML de datos a procesar por la hoja XSL

<?xml version="1.0" encoding="ISO-8859-1"?> <!--espacios de nombres autilizar--> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <!-- Elemento Raz --> <xsl:template match="/"> <html> <head> <title>Notas</title> </head> <body> <center>nodo raz</center> <xsl:apply-templates/> </body> </html> </xsl:template> <!-- Elemento nota --> <xsl:template match="nota"> <p>Nodo notas</p>

Pgina 2

<xsl:apply-templates/> </xsl:template> <!-- Elementos alumnos --> <xsl:template match="alumno"> <p>Nodo alumno</p> <xsl:apply-templates/> </xsl:template> </xsl:stylesheet>

Referencia del lenguaje construyendo un documento XSL No todos los navegadores interpretan las etiquetas XSL como indica la especificacin del W3C, pero el estndar del lenguaje est bien definido (consultar en http://www.w3.org la referencia oficial de cada versin), aunque como es habitual en cada versin de navegador de las distintas plataformas, se aaden extensiones al XSL para aumentar las prestaciones. Como ejemplo tenemos la implementacin de las etiquetas de <xsl:script> i <xsl:eval> de IE. A continuacin se presentan las etiquetas esenciales para comenzar a trabajar (no las extensiones propias de cada navegador). Primer elemento Puesto que un documento XSL es en s un elemento XML, la primera lnea ser: <?xml versin=1.0?> Elementos XSL iniciales

<xsl:stylesheet> <xsl:output> <xsl:include>

Elementos de ajuste

<xsl:template>

Elementos de seleccin

<xsl:apply-templates> <xsl:call-templates> <xsl:value-of> <xsl:for-each> <xsl:sort>

Elementos de comprobacin

<xsl:if> <xsl:choose> o o <xsl:for-when> <xsl:otherwise>

Otros elementos

Pgina 3

<xsl:element> <xsl:atribute> <xsl:comment> <xsl:variable> <xsl:param> <xsl:width-param>

Como sabe un documento XML qu un documento XSL debe utilizar? Para indicar al XML que debe utilizar un XSL, debemos introducir en la segunda lnea en el XML como la siguiente: <?xml-stylesheet type=text/xsl href=mi_hoja_de_estilo.xsl?> Ejemplo 1 Con el mismo XML visto anteriormente podramos construir un ejemplo ms complicado:
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" version="1.0"> <!-- Elemento Raz --> <xsl:template match="/"> <html> <head> <title>Notas</title> </head> <style type="text/css"> .nota{padding-left:10px;} </style> <body> <center>Listado de notas de los alumnos</center> <table border="1" align="center"> <tr align="center" bgcolor="yellow"> <td>Matricula</td> <td>Nombre</td> <td>Apellidos</td> <td>Nota final</td> </tr> <xsl:for-each select="notas/alumno"> <xsl:sort select="nombre" data-type="text" order="ascending"/> <tr align="center"> <td><xsl:value-of select="num-matricula"/></td> <td><xsl:value-of select="nombre"/></td> <td><xsl:value-of select="apellidos"/></td> <td><xsl:value-of select="nota-final"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>

Pgina 4