1 .
¿Qué es XSLT?
2 .
Motores XSLT
3 .
El ejemplo
4 .
Direcciones de interés
!!!Artículo adaptado a la recomendación XSLT del 16 Noviembre de 1999!!!
Este es el primer capítulo de una serie de artículos en los que iremos
estudiando qué posibilidades y herramientas existen hoy en día para
convertir un documento XML en HTML y cómo visualizarlo en un navegador.
¿Qué es XSLT?
Uno de los problemas del HTML es que no identifica lo que está
representando, se preocupa principalmente de que eso tiene que ir
en un color o con un tipo de letra determinada, pero no dice que lo que está
mostrando es el título de un libro o el precio de un artículo. El XML
hace precisamente esto: describe el contenido de lo que etiqueta,
sin tener en cuenta en un principio la forma de presentarlo.
El W3C está
trabajando actualmente en el desarrollo de un lenguaje de hojas de
estilo denominado XSL
(Extensible Style Language) que nos permita dar al XML un
formato de salida comprensible para los humanos.
Mediante el XSL podremos:
- Transformar un documento XML en otro XML.
- O convertirlo en otro formato de salida como puede ser
RTF,
PDF
El W3C ha divido recientemente esta especificación en dos partes:
XSL y
XSLT, siendo
la XSLT la parte de la especificación que describe el lenguaje que
nos permite convertir un documento XML en otro XML.
Motores XSLT
Hay que tener en cuenta que la especificación XSLT sigue siendo todavía
un borrador (se espera que sea una propuesta definitiva para el verano del 99)
y que, por lo tanto:
- Al no ser definitiva puede todavía sufrir algunos cambios.
- Y que los motores que existen, no la implementen en su totalidad o
proporcionen algunos añadidos que la especificación no contemple.
Existen muchos motores
e incluso, como veremos en otros artículos, el propio Explorer 5 implementa
un motor XSL que nos permite visualizar directamente XML.
En este artículo vamos a manejar el procesador XSLT denominado
XT,
esencialmente por dos razones:
- Ha sido desarrollado por James Clark,
que es el artífice de la parte de la especificación que trata el tema de
las transformaciones.
- Y porque su utilización resulta muy sencilla. Existe una
versión ejecutable
para Windows, aunque para poderla utilizar necesitamos la
Maquina Virtual Java
que viene con el Explorer 5.
En el caso de que estemos en condiciones de trabajar con la versión
ejecutable, para utilizarla no tenemos más que escribir desde la
línea de comandos:
xt fichero_xml fichero_xsl fichero_htm
Si no no es posible, al tratarse de una aplicación en Java no tenemos
más que tener instalado el JDK (actualmente trabajo con la versión
1.1.5 y funciona correctamente) y seguir los siguientes pasos:
- Bajarnos la distribución
del XT. Donde, entre otros, se encuentran los ficheros xt.jar y sax.jar.
- Bajarnos el XP,
parser de XML en Java, desarrollado por James Clark. Donde, entre otros, se
encuentra el fichero xp.jar.
Crearnos un fichero
xslt.bat,
que debe tener el siguiente aspecto:
set oldClassPath=%CLASSPATH%
set CLASSPATH=%CLASSPATH%d:\xt\xt.jar;d:\xt\sax.jar;d:\xt\xp.jar;
java com.jclark.xsl.sax.Driver %1 %2 %3
set CLASSPATH=%oldClassPath%
Indicándole en la definición del set CLASSPATH
donde se encuentran en nuestra máquina los tres ficheros .jar antes mencionados.
Y, finalmente, para ejecutarlo no tendremos más que escribir:
xslt fichero_xml fichero_xsl fichero_htm
Para cualquier duda sobre la instalación y utilización os
recomiendo que visitéis la sección sobre XT de la Web de James Clark.
El ejemplo
En nuestro ejemplo tendremos un único fichero XML en el que he reunido
mis direcciones de gastronomía preferidas y del que obtendremos dos páginas
HTML diferentes con dos XSLT distintas.
Este fichero,
gastrono.xml
tiene la siguiente estructura:
Código XML de gastrono.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<direcciones>
<tema>Mis direcciones de gastronomía</tema>
<intro>Recopìlación de mis direcciones de gastronomía favoritas.</intro>
<direccion>
<titulo>El Universal</titulo>
<url>http://www.el-universal.com/scannone/</url>
<descripcion>La cocina y la mesa de Armando Scannone con
una amplia y buena selección de artículos recetas
y consejos</descripcion>
</direccion>
........
........
</direcciones>
Y dos XSLT:
Y la forma de generar el HTML es escribiendo desde la línea de comandos
las siguientes líneas:
xt gastrono.xml gastrono1.xsl gastrono1.htm
xt gastrono.xml gastrono2.xsl gastrono2.htm
o
xslt gastrono.xml gastrono1.xsl gastrono1.htm
xslt gastrono.xml gastrono2.xsl gastrono2.htm
una para cada XSLT.
Aunque el objetivo de este artículo no es profundizar en la sintaxis de
las XSLT, veamos el código de gastrono1.xsl para destacar algunos conceptos:
gastrono1.xsl
<?xml version="1.0"?>
<xsl:stylesheet
version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="direcciones">
<html>
<head>
<title><xsl:value-of select="tema"/></title>
<link rel="stylesheet" type="text/css" href="gastrono.css"/>
</head>
<body>
<center>
<img src="gastronomia.gif"/>
</center>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="tema">
<p class="titulo">
<xsl:apply-templates/>
</p>
</xsl:template>
<xsl:template match="direccion">
<div class="direccion">
<p>
<xsl:apply-templates select="titulo"/><br/>
<xsl:apply-templates select="url"/><br/>
</p>
<xsl:apply-templates select="descripcion"/>
</div>
</xsl:template>
<xsl:template match="titulo">
<span class="dirtitulo">
<xsl:apply-templates/>
</span>
</xsl:template>
<xsl:template match="url">
<xsl:element name="A">
<xsl:attribute name="HREF"><xsl:value-of select="."/></xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="descripcion">
<p class="descripcion">
<xsl:apply-templates/>
</p>
</xsl:template>
</xsl:stylesheet>
Como podemos observar:
- La sintaxis es XML. Por tanto, una vez que aprendamos cómo funciona el
XML, no debe resultar muy complicado realizar nuestras primeras XSLT.
Como ya hemos dicho, mediante una XSLT convertimos XML en XML; en nuestro
ejemplo esto no es del todo cierto, ya que estamos convirtiendo XML en HTML
que es una aplicación SGML pero no XML. En definitiva, hemos tenido que indicar
al procesador que la salida va a ser HTML 4.0. Esto se realiza mediante la sentencia:
<xsl:output method="html"/>
Aunque como podeis observar no la hemos utilizado, ya que el procesador XT genera
de forma automatica HTML al ver que la raiz de la salida es el elemento html.
<xsl:template match="direcciones">
<html>
....
</html>
Actualmente el W3C está trabajando en una reformulación del HTML como
una aplicación XML. Esta nueva versión del HTML se llama XHTML.
Para más información sobre XML y XSL os recomiendo que visitéis el
tutorial sobre XML,
que estoy escribiendo en este mismo web.
Y si os animais a escribir diferentes XSLT para representar gastrono.xml
estaría encantado de recibirlas y publicarlas.
Direcciones de interés
Y a continuación una serie de direcciones que os pueden resultar
útiles para complementar el artículo:
El XT de James Clark. http://www.jclark.com/xml/xt.html | El procesador de XSLT desarrollado por James Clark, la misma persona que desarrolla la
especificación |
Espeficicación XSLT http://www.w3.org/TR/WD-xslt | La especificación de XSLT, en la cual se describe el lenguaje
que nos permite transformar un documento XML en otro XML. Todavia es un borrador de trabajo. |
XSL en Robin Cover http://www.oasis-open.org/cover/xsl.html | La sección dedicada al XSL en la Web sobre XML y SGML de Robin Cover.
|
Tutorial sobre XSLT de Miloslav Nic. http://zvon.vscht.cz/HTMLonly/XSLTutorial/Books/Book1/index.html | Estupendo tutorial de Miloslav Nic con multiples ejemplos a lo largo de los cuales
se estudian diferentes aspectos sobre la utilización de una XSLT. |
Lista de correo sobre XSL en Mulberry Technologies http://www.mulberrytech.com/xsl/xsl-list/ | Lista de correo sobre XSL que podemos encontrar en las páginas
de Mulberry Tecnologies. Indispensable para estar al día. |