054 011 15-4437-6034
skip to the main content area of this page
XML

Valid XHTML 1.0!

 

 

Buenos Aires, Argentina.

Ultima fecha de actualización, Agosto de 2001.

 

 

Anterior      Menú Principal      Siguiente

 

XSL:

XSL es otra tecnología orientada a dar presentación a un documento XML. Esta está basada en un vocabulario XML lo que proporciona ciertas ventajas, la desventaja radica en el escaso soporte que tiene en los distintos navegadores más conocidos, con respecto al soporte que tienen las CSS.

Un procesador XSL cumple dos funciones principales:

 

Construye un árbol de resultados sobre un árbol de origen.
Interpretar del árbol resultado para formatearlo.

 

XSL o eXtensible Stylesheet Language nos propone transformar un árbol de origen en un árbol de resultados, es una mera transformación de árboles, que no es más que pasar de un contenido XML a otro, esto implica el análisis del árbol para adjuntar información de formato y presentar cada nodo.

Esto se lleva a cabo a través de dos tareas que se corresponden con dos tecnologías bien diferenciadas: XSLTXSLFO.

XSLT es el componente de transformación de la tecnología XSL. XSLFO son los objetos de formateo. Pueden utilizarse XSLT sin preocuparse por como se va a presentar la información o podría darse formato XSLFO sin antes efectuar ninguna transformación sobre el árbol original. XSLT está alcanzando el estado de recomendación del W3C mientras que XSLFO está en la etapa de borrador. Los objetos de formateo XSL o XSLFO son un superconjunto funcional deCSS, es decir que conservan toda la funcionalidad de estas últimas, pero con una sintaxis distinta.

Al dia de hoy sólamente Microsoft brinda soporte XSL en su navegador, pero sólo cubre una parte de la especificación XSLT y pasará algún tiempo para que algún navegador dé soporte para los objetos de formateo XSLFO.

 

 

Elemento stylesheet:

El elemento stylesheet define la hoja de estilo XSL, está íntimamente ligado al concepto de espacio de nombres y en este contexto se podrán utilizar los elementos y atributos que conforman XSL.

 

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

 

en este caso el namespace es xsl, por lo que hay que prefijar así a todos los elementos y atributos XSL.

 

 

Plantillas y Patrones:

Hay dos construcciones principales dentro de una hoja de estilos XML:

 

Plantillas
Patrones

 

Una plantilla define una estructura de transformación a aplicar a ciertas porciones de un documento XML. Se puede usar una única plantilla para definir una hoja de estilo, también se pueden usar múltiples. Para definirlas se usa el elemento xsl:template que contiene los patrones y datos de la transformación. Tiene un parámetro opcional de nombre match que especifica una porción del árbol del documento, si se establece el valor de match en "/" la coincidencia se da en el elemento raiz del documento, lo que equivale a decir que la coincidencia es con el documento entero.

 

<xsl:template match="/">

           <xsl:value-of/>

</xsl:template>

 

Un patrón describe una rama de un árbol XML a través de la jerarquía de sus nodos. Esto se describe de la siguiente forma, por ejemplo:

 

agenda/contacto/telefono

 

para seleccionar el documento completo se usa la raiz (/)

Para crear patrones se puede utilizar la herramienta Microsoft de distribución gratuita de nombre Visual Pattern Builder desde http://msdn.microsoft.com/downloads/samples/internet/xml/xsl_pattern_builder

La sintaxis utilizada para dirigirse a una determinada parte de un documento XML pertenece a la tecnología XPath. Esta no es una sintaxis XML. XPath está diseñado para usarse con URIs y con valores de atibutos XML. Brinda un mecanismo para recorrer un árbol XML y ubicar un nodo determinado, esto se logra mediante expresiones del tipo de las que se ven arriba (agenda/contacto/telefono) pero las hay más complejas, utilizando las posibilidades que brinda esta tecnología acerca de los atributos y de un set de funciones que posee. La recomendación XPath se pede ver en http://www.w3.org/TR/xpath. XSLT no es la única tecnología que se sirve de XPath, más adelante, en el capítulo Vinculación de documentos: XLink y XPointer, veremos esta tecnología más detalladamente y como XPointer se sirve de ella

 

Elementos de construcción de plantillas:

Algunos de los elementos más utilizados en la construcción de plantillas XSLT son:

 

xsl:value-of
xsl:if
xsl:for-each
xsl:apply-templates

  

Elemento value-of:

xsl:value-of se usa para insertar el valor de un elemento o atributo en la hoja de estilo. Por ejemplo:

 

<xsl:template match="name">

<h2><xsl:value-of/></h2>

</xsl:template>

  

Elemento if:

xsl:if sirve para implementar cotejos condicionales, por ejemplo:

 

<xsl:if match="@edad=38">

           <xsl:apply-templates select="contacto">

</xsl:if>

  

Elemento for-each:

xsl:for-each se usa para establecer un bucle para recorrer elementos de un documento, por ejemplo,

 

<xsl:for-each order-by="+ precio" select="automoviles/automovil">

           <tr>

                       <td><xsl:value-of select="@anio"/></td>

                       <td><xsl:value-of select="@marca"/></td>

                       <td><xsl:value-of select="@model"/></td>

                       <td><xsl:value-of select="kilometraje"/></td>

                       <td><xsl:value-of select="color"/></td>

                       <td><xsl:value-of select="precio"/></td>

           </tr>

</xsl:for-each>

 

El año, la marca y el modelo están precedidos por @ lo que indica que son atributos, los demás son elementos. El atributo order-by establecido a + precio indica que la salida deberá estar en orden creciente de precio.

 

Elemento apply-templates:

Con xsl:apply-templates se pueden aplicar plantillas

 

<xsl:apply-templates select="automovil"/>

 

Cuando el procesador XSL encuentra un elemento xsl:apply-templates en una hoja de estilos aplica la plantilla que corresponde al patrón del atributo select, entonces los datos del documento se colocan en la plantilla y se transforman. Este elemento soporta el atributo order-by.

Veamos un ejemplo más completo:

 

<?xml version="1.0"?>

<?xml-style-sheet href="automoviles.xsl" type="text/xsl"?>

<automoviles>

<automovil anio="1998" marca="Volkswagen" modelo="Gol">

<kilometraje>67986</kilometraje>

<color>Bordeaux</color>

<precio>10500</precio>

</automovil>

<automovil anio="1972" marca=" Fiat" modelo="600">

<kilometraje>245768</kilometraje>

<color>Ocre</color>

<precio>750</precio>

</automovil>

<automovil anio="1986" marca="Fiat" modelo="147"><kilometraje>48089</kilometraje>

<color>Rojo</color>

<precio>2350</precio>

</automovil>

</automoviles>

 

Hoja de estilos XSL:

 

<?xml version="1.0"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

<xsl:template match="/">

<html>

<head>

<title>Automoviles Usados</title>

</head>

<body background="go.jpg">

<h1 style="background-color:#446600;

color:#FFFFFF; font-size: 20pt; text-align: center

letter-spacing:1.0 em">Automoviles Usados</h1>

<table align="center" border="2">

<tr>

<th>Anio</th>

<th>Marca</th>

<th>Modelo</th>

<th>Kilometraje</th>

<th>Color</th>

<th>Precio</th>

</tr>

<xsl:for-each order-by="+ precio"

select="automoviles/automovil">

<td><xsl:value-of select="@anio"/></td>

<td><xsl:value-of select="@marca"/></td>

<td><xsl:value-of select="@modelo"/></td>

<td><xsl:value-of select="kilometraje"/></td>

<td><xsl:value-of select="color"/></td>

<td><xsl:value-of select="precio"/></td>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

 

Acá tenemos un link que nos permite ver este documento en tu browser predeterminado: Automoviles.xml donde podemos ver al documento estructurado con DTD, con la hoja de estilos Automoviles.xsl aplicada.

También podemos ver LibrosConXSL.xml estructurado con XMLSchema (LibrosSchema.xml), con la hoja de estilos Libros.xsl aplicada.

 

Herramientas:

Stylus, está orientada a la creación de hojas de estilo XLS, posee una buena GUI, http://www.transformis.com.

 

Anterior      Menú Principal      Siguiente

 

 

Carlos Marcelo Santos.

Valid XHTML 1.0!