Las transformaciones
¿Qué es el XSL?
CSS es un método de presentación de datos del mundo del HTML. XSL es otro método de presentación de datos para documentos XML. Está mejor adaptado y permite definir hojas de estilo incluso más elaboradas para los documentos XML.
XSL se inspiró a su vez en DSSSL y CSS, los lenguajes de estilos de SGML y HTML respectivamente. Las hojas de estilo XSL se escriben en XML. Además, se ha reutilizado la semántica de DSSSL. XSL aporta numerosas ventajas en cuanto a la presentación de datos XML.
Esta sección tiene como objetivo presentar brevemente el concepto XSL y más tarde se centra en la sintaxis de dos lenguajes XSL muy importantes para el formato de los documentos XML:
-
XSLT (XSL Transformations) para la transformación de documentos;
-
XSL-FO (XSL-Formating Objects) para dar formato a los datos.
A modo preliminar, a continuación le presentamos las características principales de estas dos tecnologías.
XSLT
XSLT significa "eXtensible Stylesheet Transformation". Es, como su nombre indica, una tecnología de transformaciones derivada del XSL.
Este lenguaje permite convertir la estructura de los elementos XML. Se utiliza para transformar los documentos XML con la ayuda de hojas de estilo, que contienen las "template rules".
Las template rules son las reglas de plantilla que describen los estilos.
La transformación consiste...
Vincular un documento XML a una hoja de estilo XSL
Utilice la etiqueta xml-stylesheet para asociar un documento XML a una hoja de estilo XSL.
Los documentos XSL tienen la extensión .xsl.
No olvide especificar el valor del atributo type informando el valor text/xsl.
A continuación se muestra un ejemplo de la declaración:
<?xml-stylesheet type="text/xsl" href="directorio.xsl"?>
La etiqueta xml-stylesheet debe figurar dentro del prólogo, es decir, después de la declaración XML y antes del elemento raíz del documento XML:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="directorio.xsl"?>
<directorio>
...
Estructura básica de un documento XSL
Recuerde que un documento XSL es ante todo un documento XML. Por lo tanto, comenzará obligatoriamente con un prólogo como el siguiente:
<?xml version="1.0" encoding="ISO-8859-1"?>
Una hoja de estilo XSL se compone entre las etiquetas <xsl:stylesheet...> y </xsl:stylesheet>.
Esta contendrá el conjunto de etiquetas xsl:template que permiten definir las transformaciones que se van a aplicar sobre cada elemento del documento XML original.
El siguiente es un ejemplo de documento XSL muy simple:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/TR/WD-xsl"
xmlns="http://www.w3.org/TR/REC-html40"
result-ns="">
</xsl:stylesheet>
XSLT
La diferencia entre los términos XSL y XSLT es en ocasiones ambigua. En teoría, XSL es una familia de especificaciones que agrupa a:
- XPath (calificación de nodos dentro de un documento: consulte el capítulo Navegar en los documentos XML).
- XSLT (lenguaje de transformaciones).
- XSL-FO (lenguaje de presentación).
Esta división en tres especificaciones se realizó mucho después de la aparición de XSL. En la actualidad, XSL hace referencia más bien a las versiones antiguas de la especificación antes de realizar dicha "división". XSLT designa la recomendación actual del lenguaje de transformación (XSLT 1.0). Para añadir más confusión, hay quien habla de XSL para diseñar la parte de la ”presentación”. Ahora bien, únicamente XSL-FO permite este tratamiento.
1. ¿Qué es una transformación XSLT?
XSLT es un lenguaje que permite reestructurar radicalmente el documento XML original según el formato deseado. Las transformaciones XSLT se emplean cada vez más para generar vistas múltiples de contenidos con el fin de adaptarse, por ejemplo, a diferentes tipos de terminales (teléfono móvil, Web TV, ordenador de oficina, etc.).
Los elementos y los atributos XSLT constituyen un lenguaje de tratamiento de datos XML. Podrá utilizar el volcabulario XSLT a la vez para recuperar los datos fuente y para crear nuevos elementos o atributos.
Una transformación XSLT necesita dos documentos:
-
un documento XML original,
-
una hoja de estilo XSLT.
Gracias a estos dos parámetros, XSLT puede producir un documento resultado sencillo. Como ya se ha explicado anteriormente, el documento XML básico se representa con la forma de un árbol original.
La transformación se realiza aplicando las reglas de plantilla (template rules) que se encuentran en la hoja XSL. Esto genera un árbol resultado, representado generalmente con la forma de un documento XML o HTML.
A continuación se muestra un ejemplo sencillo de transformación de un árbol fuente en resultado:
<grupo nombre="Cure">
<músico>
<apellido>Smith</apellido>
<nombre>Robert</nombre>
<función>Voz y Guitarras</función> ...
XSL-FO
Como ya se ha explicado, el W3C distingue dos tecnologías XSL:
-
XSLT, el lenguaje de transformación de documentos XML;
-
XSL-FO, el lenguaje de formato y presentación.
XSLT es fácil de comprender y de implementar. En poco tiempo, se puede convertir fácilmente un archivo XML en un archivo HTML navegable. Por este motivo, la mayoría de los desarrolladores recomiendan su utilización.
XSL-FO es también un lenguaje descrito en XML. Permite especificar con mucha precisión la paginación, la organización y la información de estilo aplicada a sus contenidos. Sin embargo, el concepto XSL-FO es algo complejo. Los códigos son muy extensos y la manera más sencilla de generar fuentes XSL-FO consiste en producirlas mediante XSLT. Una vez se obtiene la fuente XSL-FO, hay que encontrar un medio de generar una representación. Existen pocas herramientas que nos ayuden a realizar esta etapa final.
Esta sección no pretende en absoluto dar información detallada sobre XSL-FO. Por sí mismo, podría constituir el objeto de varios libros. El objetivo, aquí, es aprender los conceptos básicos.
A través de un sencillo ejemplo descubrirá las etapas necesarias para la creación de un documento PDF. XSLT permite generar automáticamente el código XSL-FO. Así, gracias al documento XSL, podrá al mismo tiempo transformar el documento fuente XML y generar el código de presentación XSL-FO.
Aquí, para facilitar la comprensión de su sintaxis, XSL-FO se presenta solo, sin ningún documento XSLT.
El ejemplo ilustra el diseño de un informe técnico en formato PDF.
1. Inicialización y estructura del documento
Recuerde que un documento XSL-FO es ante todo un documento XML. Por lo tanto, debe comenzar con un prólogo.
El elemento raíz del documento es fo:root.
<?xml version="1.0" encoding="ISO-8859-1"?>
<fo:root>
La estructura del resto del documento se presenta de la siguiente manera:
-
la disposición general;
-
las descripciones de los tipos de páginas que se pueden encontrar;
-
el orden de aparición de los tipos de páginas;
-
las páginas y sus contenidos.
2. La disposición de las páginas
La descripción de las páginas de un documento...