Contenido

Tomando contacto con XSLT(I)

7 ago

+ 11

XSLT o Hojas de estilos aplicadas a XML (eXtensible Stylesheet Language) , son sin duda una herramienta de futuro y importante de conocer aunque sea únicamente la base. He pensado en que podría aprovechar que es principalmente la tecnología que utilizo en el trabajo, y lo llevo bastante por mano, para hacer un pequeño manual en capítulos con lo más importante de este lenguaje.

Introducción 

XML es ya un estandard a cumplir y usar, ya que es una forma eficiente y rápida de contener información. Es tal su fuerza que lenguajes como HTML están absorbiendo su estructura dando lugar a xHTML, una forma de conseguir ficheros bien formados y faciles de trocear para encontrar información.

XML 


<?xml version="1.0" encoding='UTF-8'?>
<biblioteca>
	<libro id="0">
		<isbn>3244223ccdgf3245</isbn>
		<titulo>El XSL es facil</titulo>
		<autor>Perico de los palotes</autor>
		<fila>3</fila>
		<estante>2</estante>
	</libro>
	<libro id="1">
		<isbn>3244223ccdgf3256</isbn>
		<titulo>El XSL es facil 2</titulo>
		<autor>Perico de los palotes</autor>
		<fila>3</fila>
		<estante>3</estante>
	</libro>
</biblioteca>

Como se puede ver en este ejemplo tenemos un código que podría corresponder a un biblioteca, en el cual tendríamos libros, con sus datos. La ventaja de tener esto es que gracias este estandard nosotros podemos utilizar esta información con un XSL, o con una herramienta de escritorio, o con cualquier herramienta que pueda modificar la salida de este XML.

Un caso muy claro es el XML que tienen todos los blogs, los feeds. Los feeds no son más que un XML bien formado que se encarga de contener la información referente a los posts, de esta forma cualquier herramienta (netvibes, bloglines, feedreader,….) pueden interpretar ese código XML y tratarlo como mejor les convenga, en este caso lo convierten a HTML para mostrarnos el contenido.

¿Cuando entra en juego XSL?

XSL entra en juego cuando queremos reformatear la salida de un XML. Me explico:

Imagina que tienes el XML que mostramos arriba de la biblioteca, y queremos convertirlo a un HTML sin perder el XML del que disponemos, en ese caso entra en juego XSL. Mediante una serie de funciones y elementos convertiremos la salida de nuestro XML en un HTML a nuestro gusto, con la ventaja de que cualquier cambio en el XML no requerirá la modificación de la XSL, se verá reflejado en el HTML.

Estructura de XSL

Al esta basado en XML, tenemos que tener en cuenta las mismas premisas de XML a la hora de montar el código. El resultado ha de ser una estructura bien formada.

XSL 


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:template match='/'>
	<html>
		<head>
		<title>Tomando contacto con XSLT</title>
		</head>
		<body>
		<xsl:for-each select="biblioteca/libro">
			<h1><xsl:value-of select="titulo" /></h1>
			<h2><xsl:value-of select="autor" /></h2>
			<h3><xsl:value-of select="isbn" /></h3>
			<p>Ubicación:
				<br />
				Fila:<xsl:value-of select="fila" />
				Estante:<xsl:value-of select="estante" />
			</p>
		</xsl:for-each>
		</body>
		
	</html>
	</xsl:template>
</xsl:stylesheet>

Vamos a destripar este ejemplo:

<?xml version="1.0" encoding="UTF-8"?>

Esto es la declaración que requieren todos los ficheros XML, en ella indicamos que se trata de un fichero de la versión 1.0 codificado en UTF-8.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 En esta línea indicamos en comienzo de nuestra hoja de estilos, todo lo que haya dentro de ella será tratado como una XSL y debería englobar a todo el contenido, si algo estuviera fuera obtendríamos un error de XML mal formado.

En el estamos indicando que se trata de una XSL 1.0 y que el namespace  que vamos a utilizar es el xsl, y la URL de donde recogerá la información en caso de que el navegador no pueda interpretarlo.

<xsl:template match='/'>

 Esta línea hace referencia a un template, una especie de función en XSL que nosotros podemos llamar desde nuestro código, es más limitado que una función pero se usan como tal. En esta estamos indicando que se trata de la raiz y por lo tanto será llamada directamente al cargar la página.

¿Como unir el XML al XSL?

Esto es muy facil y además lo hemos usado de forma similar en cualquier HTML que hayamos creado.

Al igual que en HTML usamod <script></script> para añadir un JS o <link></link> para un CSS, en XML para añadir un XSL hemos de hacer lo siguiente:

<?xml-stylesheet href="xsl.xsl" type="text/xsl"?>

Esta línea colocada justo detrás de la declaración del XML, nos indicará que ese fichero necesita el xsl.xsl para formatear su salida.

Cosillas para ir mirando

  1. Tutorial XSLT
  2. Tutorial oficial W3C
  3. Referencia XSLT
  4. Recomendación XSLT
  5. aulambra.com – XSLT: XSL Transformations
  6. Mini Como XSLT

Bueno, por hoy no puedo dedicarle más tiempo, os dejo los ficheros por si quereis probar

xsl, xml, xhtml

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.