María Jesús Lamarca Lapuente. Hipertexto: El nuevo concepto de documento en la cultura de la imagen. |
XSL o Extensible Stylesheet Language no se trata de un único lenguaje, sino de toda una familia de recomendaciones del World Wide Web Consortium (http://www.w3.org/Style/XSL/) para expresar Hojas de estilo en lenguaje XML. El lenguaje XSL consta de tres partes:
Una hoja de estilo XSLT especifica la presentación de una clase de documentos XML para describir cómo un evento de clase se transforma dentro de un documento XML que usa un vocabulario formateado tal como (X)HTML o XSL-FO. A pesar de la existencia de las CCS u Hojas de Estilo en Cascada que sirven para definir las presentaciones de los documentos en la Web, se ha creado otra forma específica para las presentaciones en XML. Esto se debe a que las CCS u Hojas de Estilo en Cascada son eficaces para describir formatos y presentaciones, pero no sirven para decidir qué tipo de datos deben ser mostrados y cuáles no deben salir en la pantalla. CCS se utiliza con documentos XML en los casos en los que debe mostrarse todo su contenido. XLM no sólo sirve para especificar cómo queremos presentar los datos de un documento XML, sino también para filtrar los datos de acuerdo con ciertas condiciones. XSL es más complejo que las CCS y permite muchas más funciones que las Hojas de Estilo, ya que se asimila más a un lenguaje de programación. Además de la presentación visual, XLS permite otras opciones como la ejecución de bucles y sentencias, operaciones lógicas, ordenación de datos, selecciones por comparación, utilización de plantillas, etc. XSL o eXtensible Stylesheet Language define o implementa el lenguaje de estilo de los documentos escritos para XML. Desde 1997 varias empresas informáticas como Arbortext, Microsoft e Inso se pusieron a trabajar en una propuesta de XSL (antes llamado "xml-style") que presentaron al W3C y cuyo fin era permitir modificar el aspecto de un documento. Con las Hojas de Estilo ya se podían lograr algunas mejoras en el aspecto del documento, pero XSL permite otras muchas aplicaciones como múltiples columnas, texto girado, orden de visualización de los datos de una tabla, múltiples tipos de letra con amplia variedad en los tamaños, etc. El lenguaje SGML tiene su propio estándar para la transformación y representación de sus documentos en forma de árbol, el DSSSL (Document Style Semantics and Specification Language, ISO10179), que en realidad es un lenguaje de programación completo y muy potente basado en el dialecto Scheme del lenguaje LISP. Por tanto, ya que XML es una versión reducida de SGML parecía lógico hacer también una versión reducida del DSSSL, llamada en este caso XSL (Extended Stylesheet Language). El estándar XSL está basado en el lenguaje de semántica y especificación de estilo de documento (DSSSL, Document Style Semantics and Specification Language) y, por otro lado, se considera más potente que las hojas de estilo en cascada (CSS, Cascading Style Sheets), usado en un principio con el lenguaje HTML. Las CSS se usan para visualizar simples estructuras de documentos XML y hoy se ha conseguido una gran integración en XML con el protocolo CSS2 (Cascading Style Sheets, level 2) ofreciendo nuevas formas de composición y una más rápida visualización), pero XSL es sumamente útil cuando se requiere una mayor potencia de diseño en los documentos XML, sobre todo cuando éstos encierran datos estructurados como tablas, organigramas, etc. Así pues, básicamente, XSL es un lenguaje de hojas de estilos diseñado para su utilización en la Web, que provee más funcionalidades que las hojas de estilo en cascada (CSS o Cascade Stylesheet) y proporciona un representación de forma independiente de la plataforma utilizada o del medio de representación de la información recogida en los documentos XML. Dicha representación se crea mediante la formación de un árbol de objetos de flujo (flow objects tree). Un objeto de flujo tiene una clase, la cual representa una tarea o actividad de representación. Asimismo, un objeto de flujo dispone de un conjunto de características, mediante las cuales se puede especificar mucho más la representación. La asociación de elementos en el árbol origen con los objetos de flujo se lleva a cabo mediante las reglas de construcción, las cuales contienen un patrón para identificar elementos específicos en el árbol origen, y una acción para especificar un subárbol resultante de objetos de flujo. El procesador de hojas de estilo procesará de forma recursiva los elementos del origen para producir un completo árbol de objetos de flujo. Además de las reglas de construcción, XSL también soporta reglas de estilo, las cuales permiten la mezcla de características. Mientras que una sola regla de construcción puede ser invocada para un elemento en particular del origen, pueden ser invocadas todas las reglas de estilo aplicables, permitiendo la mezcla de características como en CSS. Resumiendo, un hoja de estilo XSL describe el proceso de presentación a través de un pequeño conjunto de elementos XML. Esta hoja, puede contener elementos de reglas que representan a las reglas de construcción y elementos de reglas de estilo que representan a las reglas de mezcla de estilos. En cuanto a la inclusión de imágenes en las páginas XML, estas son sólo enlaces, luego pueden representarse de cualquier modo soportado por las especificaciones XLink y Xpointer, incluyendo la utilización de una sintaxis similar a las imágenes HTML existentes. Estas especificaciones, sin embargo, ofrecen un mejor control sobre la activación y cruce de enlaces, por lo que se puede elegir, por ejemplo, si se carga o no una imagen al cargar una página, o mediante un clic del ratón, o en una ventana adicional, sin tener que cambiar el código. Los soportes para formatos gráficos son un problema específico de los navegadores y visualizadores, y por tanto de la definición del XSL específico. XML por sí mismo ni predice ni restringe nada. Los formatos que se perfilan como de mayor utilidad son GIF, JPG, TIFF y CGM. Para una explicación más detallada de cómo funciona XSL, se puede consultar la web del World Wide Web Consortium: What Is XSL. (http://www.w3.org/Style/XSL/WhatIsXSL.html) y para una información más completa sobre Hojas de estilo, ver la página Web style sheets (http://www.w3.org/Style/)
XSLT está recogido en la Recomendación del W3C: XSL Transformations (XSLT) Version 2.0
http://www.w3.org/TR/xslt20/ Una transformación en el lenguaje XSLT está expresada en la
forma de una hoja de estilo, cuya sintaxis está bien formada en XML conforme a la Recomendación Namespaces in
XML (http://www.w3.org/TR/REC-xml-names/). Una hoja de estilo generalmente incluye tanto elementos que
están bien definidos por XSLT como elementos que no están definidos por XSLT.
Los elementos definidos XSLT se distinguen por el uso de
namespaces o espacios de nombre
El término hoja de estilo refleja el hecho de que uno de los
roles más importantes de XSLT es también añadir información de estilo a un
documento fuente XML para transformarlo en un documento que consta de objetos de
formato XSL, o en otro formato orientado a la presentación, tal como
HTML, XHTML, o
SVG.
Sin embargo, lo que caracteriza a XSLT es que se usa para un gran número de tareas de transformación, no
exclusivamente para aplicaciones de formato y presentación. Una transformación expresada en XSLT describe reglas para
transformar cero o
Una hoja de estilo puede constar de
varios módulos de hojas de estilo contenidos en diferentes documentos XML. Para una transformación
dada, una de estas funciones es el módulo de hojas de estilo principal (principal stylesheet module.)
La hoja de estilo completa se adjunta para encontrar los módulos de hojas de
estilo directa o indirectamente referenciados desde el modulo de hoja de
estilo principal usando los elementos
Una aplicación concreta de XLT es, por ejemplo, su
utilización para diseñar un portal. Al poder separar
el contenido (XML) de la presentación (XLT) es posible utilizar un mismo
entramado o esqueleto para diseñar un portal en XML y cambiar la apariencia
gráfica utilizando una plantilla u hoja de estilo mediante XLT. XPath es un lenguaje para
direccionar partes de un documento XML, y está diseñado tanto para ser utilizado
con XSL como por XPointer. Se trata de una especificación W3C:
http://www.w3.org/TR/xpath
XPath también proporciona una serie de funcionalidades básicas para
manipular cadenas, números y booleanos. XPath opera sobre la
estructura lógica abstracta de un documento XML, más que en su sintaxis
superficial y se denomina así por el uso que hace de una notación de
caminos, como en los URLs, para navegar a través de la estructura jerárquica
de un documento XML.
Además de su uso para direccionar, XPath esta diseñado también de modo que
tiene un subconjunto natural que puede usarse para cotejar (comprobar si un nodo
encaja con un patrón o no); este uso de XPath se describe en XSLT.
XPath modela un documento XML como un árbol de nodos. Hay diferentes tipos de
nodos, incluyendo nodos elemento, nodos atributo y nodos texto. XPath
define un modo de calcular un valor de cadena para cada tipo de nodo. Algunos tipos de nodo también
tienen nombres. XPath es totalmente compatible con XMLNamespaces. Así, el nombre de un nodo se modela como un par
consistente en una parte local y un (quizá nulo) URI de
espacio de
nombres; a esto se le llama un nombre expandido.
El
modelo de datos es el siguiente: El
árbol contiene nodos. Hay siete tipos de nodos: nodos raíz: El nodo raíz es la raíz del árbol. No aparecen nodos raíz salvo como
raíz del árbol. El nodo elemento del elemento de documento es hijo del nodo
raíz. El nodo raíz tiene también como hijos los nodos instrucción de
procesamiento y comentario correspondientes a las instrucciones de
procesamiento y comentarios que aparezcan en el prólogo y tras el fin del
elemento de documento. El valor de cadena del nodo
raíz es la concatenación de los valores de cadena
de todos los nodos texto descendientes del nodo
raíz en orden de documento. El nodo raíz no tiene nombre
expandido. nodos
elemento: Hay un nodo elemento por cada elemento en el documento. Los
nodos elemento tienen un nombre expandido
calculado expandiendo el QName del elemento especificado en la etiqueta
de acuerdo con la Recomendación XML Names.
El URI de espacio de nombres del nombre expandido
del elemento será nulo si el QName no tiene
prefijo y no hay un espacio de nombres por defecto aplicable. Los hijos de un
nodo elemento son los nodos elemento, nodos comentario, nodos instrucción de
procesamiento y nodos texto que contiene. Las referencias de entidades tanto a
entidades internas como externas son expandidas. Las referencias de caracteres
son resueltas. El valor de cadena de un nodo
elemento es la concatenación de los valores de
cadena de todos los nodos texto descendientes
del nodo elemento en orden de documento. Los nodos elemento pueden tener un
identificador único (ID). Este es el valor del atributo que se declara en el
DTD como de tipo nodos texto: Los datos de carácter se agrupan en nodos texto. En cada nodo texto se
agrupan todos los datos de carácter que sea posible: un nodo texto nunca tiene
un hermano inmediatamente anterior o siguiente que sea nodo texto. El valor de cadena de los nodos texto son los
datos de carácter. Los nodos texto siempre tienen al menos un carácter. Cada
carácter en una sección CDATA se trata como datos de carácter. Así,
nodos
atributo: Cada nodo elemento tiene asociado un conjunto de nodos
atributo; el elemento es el padre de cada uno de
esos nodos atributo; sin embargo, los nodos atributo no son hijos de su
elemento padre. nodos espacio
de nombres: Cada elemento tiene un conjunto asociado de nodos espacio
de nombres, uno para cada uno de los distintos prefijos de espacio de nombres
con efecto sobre el elemento (incluyendo el prefijo
para cada atributo del elemento cuyo nombre empiece por
para cada atributo de un elemento ancestro cuyo nombre
empiece por para atributos
nodos
instrucción de procesamiento: Hay un nodo instrucción de procesamiento
para cada instrucción de procesamiento, salvo para aquellas que aparezcan
dentro de la declaración de tipo de documento. Las instrucciones de
procesamiento tienen un nombre expandido: la
parte local es el destinatario de la instrucción de procesamiento; el URI de
espacio de nombres es nulo. El valor de cadena
de un nodo instrucción de procesamiento es la parte de la instrucción de
procesamiento que sigue al destinatario y todo el espacio en blanco. No
incluye la terminación nodos
comentario: Hay un nodo comentario para cada comentario, salvo para
aquellos que aparezcan dentro de la declaración de tipo de documento. El valor de cadena de los comentarios es el
contenido del comentario sin incluir el inicio
Para
cada tipo de nodo, hay una forma de determinar un valor de cadena
para los nodos de ese tipo. Para algunos tipos de nodo, el valor de cadena es
parte del nodo; para otros tipos de nodo, el valor de cadena se calcula a partir
del valor de cadena de nodos descendientes.
La construcción sintáctica básica en XPath es la expresión. Una expresión
se ajusta a la regla de producción Expr. Las expresiones son evaluadas para producir un objeto, que
tendrá uno de los siguientes cuatro tipos básicos: La
evaluación de expresiones tiene lugar respecto a un contexto. XSLT y
XPointer especifican cómo se determina el contexto para las expresiones
XPath usadas en XSLT y XPointer respectivamente. El contexto consiste en: Un nodo (el nodo contextual ). un par de enteros positivos no nulos ( la posición contextual
y el tamaño contextual):
La
posición contextual es siempre menor o igual que el tamaño contextual. un conjunto de asignaciones de variables (correspondencia
de nombres de variable a valores de variable. El valor de una variable
es un objeto, que puede ser de cualquiera de los tipos posibles para el valor
de una expresión, y puede también ser de tipos adicionales no especificados
aquí). una biblioteca de funciones (correspondencia
de nombres de funciones a funciones. Cada función toma cero o más
argumentos y devuelve un único resultado). el conjunto de declaraciones de espacios de nombres aplicables a la
expresión (correspondencia de prefijos
a URIs de espacios de nombres). Un tipo importante de
expresión es el camino de localización. Un camino de localización selecciona un
conjunto de nodos relativo al nodo de contexto. El resultado de evaluar
una expresión que sea un camino de localización es el conjunto de nodos
seleccionados por el camino de localización. Los caminos de localización
pueden contener recursivamente expresiones utilizadas para filtrar conjuntos de
nodos. Un camino de localización se ajusta a la regla de producción LocationPath.
Hay
dos tipos de caminos de localización:
caminos
de localización relativos: consiste en
una secuencia de uno o más pasos de localización separados por
caminos
de localización absolutos: consiste en Un
paso de localización tiene tres partes: un eje, que especifica la relación
jerárquica entre los nodos seleccionados por el paso de localización y el nodo
contextual, una prueba de nodo, que especifica
el tipo de nodo y el nombre-expandido
de los nodos seleccionados por el paso de localización, y cero o más predicados, que usan
expresiones arbitrarias para refinar aún más el conjunto de nodos seleccionado
por el paso de localización. La
sintaxis del paso de localización es el nombre de eje y prueba de nodo
separados por dos caracteres de dos puntos, seguido de cero o más expresiones,
cada una entre paréntesis cuadrados. Por ejemplo, en El
conjunto de nodos seleccionado por el paso de localización es el que resulta de
generar un conjunto de nodos inicial a partir del eje y prueba de nodo, y a
continuación filtrar dicho conjunto por cada uno de los predicados
sucesivamente.
El conjunto de nodos inicial se compone de los nodos que tengan la relación con
el nodo contextual que se especifica en el eje, y tengan el tipo de nodo y nombre-expandido
especificados por la prueba de nodo. Por ejemplo, un paso de localización El
conjunto de nodos inicial se filtra por el primer predicado para generar un
nuevo conjunto de nodos; este nuevo conjunto de nodos es entonces filtrado
usando el segundo predicado, y así sucesivamente. El conjunto de nodos final es
el conjunto de nodos seleccionado por el paso de localización. El eje afecta a
la forma en que se evalúa la expresión de cada predicado y, por tanto, la semántica
de un predicado se define con respecto a un eje. Están
disponibles los siguientes ejes:
El eje
El eje
El eje
El eje
El eje
El eje
El eje
El eje
El eje
El eje
El eje
El eje
El eje Los ejes Cada
eje tiene un tipo principal de nodo. Si un eje puede contener elementos,
entonces el tipo principal de nodo es elemento; en otro caso, será el tipo de
los nodos que el eje contiene. Así, Una
prueba de nodo que sea un QName (nombre calificado) es verdadera si
y solo si el tipo del nodo es el tipo principal de nodo y tiene un nombre
expandido igual al nombre
expandido especificado por el QName. Por ejemplo, Un
QName en la prueba de
nodo se expande en un nombre
expandido utilizando las declaraciones de espacio de nombres del contexto de
la expresión. Esta es la misma forma en que se hace la expansión para los
nombres de tipos de elemento en las etiquetas de inicio y fin salvo que el
espacio de nombres por defecto declarado con Una
prueba de nodo Una
prueba de nodo puede tener la forma NCName La
prueba de nodo Una
prueba de nodo Los
ejes están orientados hacia adelante o hacia atrás. Un eje que solo puede
contener el nodo contextual o nodos que están a continuación del nodo
contextual según el orden
de documento es un eje hacia adelante. Un eje que solo puede contener el
nodo contextual o nodos que están antes del nodo contextual según el orden
de documento es un eje hacia atrás. Así, los ejes ancestor,
ancestor-or-self, preceding, y
preceding-sibling son ejes hacia atrás; todos
los demás ejes son hacia adelante. Dado que el eje self siempre tendrá a lo
sumo un nodo, no supone ninguna diferencia que sea un eje hacia adelante o hacia
atrás. La posición de proximidad de un miembro de un conjunto de nodos
con respecto a un eje se define como la posición del nodo en el conjunto
ordenado según el orden de documento si el eje es hacia adelante y según el
orden inverso de documento si el eje es hacia atrás. La primera posición es 1. Un
predicado filtra un conjunto de nodos con respecto a un eje para producir un
nuevo conjunto de nodos. Por cada nodo en el conjunto de nodos a filtrar, la
PredicateExpr
es evaluada con dicho nodo como nodo contextual, con el número de nodos en el
conjunto de nodos como tamaño contextual, y con la posición
de proximidad del nodo en el conjunto de nodos respecto al eje como posición
contextual; si PredicateExpr
se evalúa como verdadera para ese nodo, el nodo se incluye en el nuevo conjunto
de nodos; en otro caso, no se incluye. Una
PredicateExpr
se evalúa evaluando la Expr y convirtiendo el resultado en un booleano. Si el resultado es un número, se
convertirá en verdadero si el número es igual a la posición contextual y se
convertirá en falso en otro caso; si el resultado no es un número, entonces el
resultado se convertirá igual que con una llamada a la función
boolean.
Así un camino de localización
Las expresiones se analizan dividiendo primero la cadena de caracteres a
analizar en tokens y a continuación analizando la secuencia de tokens
resultante. Se puede usar libremente espacio en blanco entre tokens.
El proceso de tokenización se describe en Estructura Léxica. En la
tokenización, siempre se devuelve el token más largo posible.
La especificación también alude a
las funciones que las implementaciones de XPath deben incluir
siempre en la librería de funciones que se usa para evaluar expresiones. Hay
funciones de conjunto de nodos, de cadenas, booleanas y numéricas. Existe también una Especificación llamada XML Path Language (XPath) 2.0. (http://www.w3.org/TR/xpath20/). En la versión 2, XPath es un lenguaje de expresión que permite el procesamiento de conformidad al modelo de datos definido en XQuery 1.0 and XPath 2.0 Data Model. (http://www.w3.org/TR/xpath-datamodel/) El modelo de datos también ofrece una representación de árbol de los documentos XML. XPath 2.0 es un conjunto de XPath 1.0 con algunas capacidades añadidas, como la de soportar un conjunto más rico de tipos de datos, y usar los esquemas de XML Schema para validar los documentos. XSL Formatting Objects (XSL-FO)El eXtensible Stylesheet Language Formatting Objects (XSL-FO) es una Recomendación del W3C: http://www.w3.org/TR/xsl. Desafortunadamente, el término XSL se usa a menudo tanto en un sentido genérico, como en otro específico, lo que crea una gran confusión. Como ya hemos afirmado, genéricamente, XSL es, en la actualidad, una familia de 3 Recomendaciones producidas por el W3C: XSL Transformations (XSLT), XML Path Language (XPath), y eXtensible Stylesheet Language (el uso específico de XSL). Para borrar la confusión entre los usos genéricos y específicos de XSL, mucha gente se refiere a la última especificación (que actualmente especifica el formateador de objetos) como XSL-FO. Hay también una confusión importante sobre las diferencias entre XSL-FO y CSS. CSS o Cascading Style Sheets es un lenguaje de hojas de estilo externo. Se usa para aplicar estilo a un documento XML o HTML para seleccionar elementos en el documento y adjuntar propiedades de estilo a cada elemento seleccionado. En contraste, XSL-FO es un lenguaje para describir un estilo de documento completo, incluyendo la organización de su contenido, estilo, disposición y reglas de selección de la composición, entre ellas la necesidad de formatearlo y paginarlo. Para usarlo, se aplica una hoja de estilo XSLT (stylesheet XSLT) o algún otro mecanismo al documento original XML o XHTML, transformándolo en un documento XSL-FO, lo que se llama alimentar un formateador. El desarrollo de XSL-FO se debió a 3 razones fundamentales. La primera es que no existía un lenguaje para describir la paginación de documentos complejos en la Web. Todavía hoy, cuando se imprime un documento desde un navegador, la línea de texto que aparece al final de la página, aparece a menudo cortada. Si esto sucede en un dibujo, medio dibujo aparece en la primera página y un espacio en una caja negra aparece en la siguiente página. CSS-2.0 añadió algún soporte básico para la paginación, pero todavía no ha sido plenamente implementado en los navegadores comunes. Es más, CSS trabaja solamente con documentos cuyo contenido está organizado de la misma forma que la presentación —no elementos que saltan, ni elementos presentados fuera de secuencia, etc. La segunda razón es que no existía forma para operar con documentos largos y con composiciones complejas. La Web estándar no soporta cosas como tablas de contenidos, llamadas, notas al pie, notas al final, índices o múltiples artículos en una página, composiciones comunes en periódicos, revistas o páginas de catálogos. Y la tercera es que el nivel de la tipografía en CSS no bastaba para imprimir documentos, puesto que CSS se limitaba únicamente a las necesidades de los navegadores, y no era un formato adecuado para la impresión. Objetivos del Working Group Así pues, el grupo de trabajo del XSL-WG, estableció un número de objetivos para el diseño de XSLT y XSL-FO:
Mucha gente se hace las siguientes preguntas: "Si ya existen las CSS ¿para qué se necesita XSL-FO?” o "Si existen unas maravillosas herramientas de composición WYSIWYG, muchas de las cuales pueden procesar XML, ¿por qué usar XSL-FO?" Además, muchas personas piensan también que las hojas de estilo CSS y XSL son bastante más difíciles y complicadas de escribir que utilizar las agradables interfaces gráficas GUIs de programas de composición tales como FrameMaker o InDesign. Sin embargo, los requerimientos de la industria de la edición y la publicación son amplios y diversos. Algunos documentos requieren elementos de creación profesional para interactivamente modificar la disposición, el contenido y la tipografía para así obtener un resultado aceptable; otros documentos resultan mejores cuando son generados y formateados bajo demanda usando sistemas basados en reglas. XSL-FO está diseñado para cubrir este agujero en el formato bajo demanda en el sector de la industria; en donde es ideal para productos de colecciones de páginas tales como Adobe Document Server. Los requerimientos del sector de formato bajo demanda son totalmente diferentes de aquellos diseñados para la interacción, y herramientas de composición WYSIWYG tales como FrameMaker e InDesign. Hoy las herramientas de composición WYSIWYG son muy buenas en la creación y perfeccionamiento de documentos individuales, que es el motor primordial de la existencia de muchas de las publicaciones tradicionales de la industria. En estos productos WYSIWYG, el contenido, el estilo y la composición están estrechamente ligadas al documento y así, mover el documento a un medio alternativo (pantalla versus papel, pantallas con diferentes tamaños o formatos) es una tarea ardua, complicada y difícil. Otra área donde las herramientas WYSIWYG no son buenas es en la producción de cientos de documentos cuyo contenido está sacado de una base de datos y vertido en documentos a modo de plantillas donde cambian los datos. En estos casos, se necesita que pueda darse a toda la colección de documentos un aspecto común y agradable, y que sea fácil de elaborar. Existen dos situaciones en las que es mejor operar con software de composición interactiva: cuando un diseñador necesita control creativo de la disposición, y cuando un escritor o ilustrador necesita trabajar con el contenido mientras simultáneamente ve o modifica esta composición. En la edición de revistas, por ejemplo, el diseño de páginas es en muchos casos complejo y la composición de cada página está hecha a la medida del contenido. (A menudo, ambos, el contenido y la composición, serán ajustados de forma repetida para obtener el resultado deseado.) En la producción de folletos, los gráficos y la composición deben ser producidos al mismo tiempo y los cambios influyen los unos en los otros. También en la producción de periódicos, el contenido está a menudo editado para rellenar un espacio exacto. En estas situaciones, las herramientas de composición interactiva como Adobe InDesign y Adobe InCopy son la elección apropiada. Sin embargo hay situaciones donde la composición interactiva es imposible. Como ejemplo podemos poner casos en los que la generación del contenido de los documentos viene dada en respuesta a requerimientos individuales (quizás a través del servidor Web) o variaciones de un documento plantilla donde varían algunos campos de datos. En tales situaciones, XSL-FO corriendo en un producto como Adobe Document Server es la elección apropiada. Otro objetivo importante es imprimir únicamente el contenido que toma gráficos y texto desde las mismas fuentes o recursos de contenido neutro XML que están siendo dinámicamente publicados en la Web. XSL-FO, en conjunción con la especificación XML compañera, XML SVG, ofrece una manera clara para unificar las herramientas de publicación dinámica orientadas a la Web y la impresión. Así pues, XSL-FO es un formato intermediario entre el medio XML neutro y el medio dependiente de la salida. Si se alimenta con contenido estructurado XML y una hoja de estilo XSLT a un procesador XSLT, el resultado es XSL-FO. Luego se alimenta XSL-FO, junto con fuentes métricas y algún gráfico o imagen externa, dentro de un formateador XSL-FO, y el resultado es un documento paginado (en PDF o código para imprimir) que puede ser visualizado o impreso. La siguiente imagen muestra a la perfección el funcionamiento de todo este proceso:
Fuente: DEACH, Stephen. "What Is XSL-Fo and When Should I Use It?" En resumen, el lenguaje XSL o Extensible Stylesheet Language abarca una serie de tecnologías que se pueden compendiar de la siguiente forma: XSLT (XSL Transforms): La palabra “Transforms” muestra exactamente en qué consiste esta parte del estándar pues describe cómo los documentos XML pueden ser filtrados y convertidos en otros documentos XML, incluyendo archivos XSL-FO. Desafortunadamente, un XSLT que especifica este tipo de conversión se denomina hoja de estilo, lo cual crea una gran confusión debido al uso tradicional del término. Una hoja de estilo XSLT es un concepto que encierra una rutina de búsqueda y sustitución más sofisticada que el de las hojas de estilo anteriores. Xpath (XSL Path Language): Se usa con XSLT para especificar las partes de un documento XML a las cuales se aplica la transformación. Los modelos XPath en documentos XML son un árbol de nodos con padre-hijos y relaciones entre ellos próximas-lejanas. Estos nodos son de diferentes tipos: nodos elemento, nodos atributo, nodos texto, etc. Si XSLT es una herramienta de búsqueda y reemplazo sofisticada, entonces Xpath es la manera para seleccionar qué nodos o tipos de nodos buscar. XSL-FO (XSL Formatting Objects): El archivo XSL-FO contiene el medio y apariencia específica de los objetos formateados para fabricar la página (o, para salida de audio, el discurso). Para el medio impreso, los objetos formateados (formatting object) pueden incluir caracteres, bloques de texto, imágenes, tablas, bordes, páginas maestras y otros elemento similares. XSL-FO no es un lenguaje de descripción de página. Puede especificar varias reglas de composición (por ejemplo, dónde situar una ruptura de página) y requerimientos (por ejemplo, ir a una nota al pie en el final de la página), pero no determina la colocación actual de cada elemento. Esto está determinado por el motor paginador XSL-FO, llamado formateador (formatter). La salida de un formateador no necesita necesariamente tener asignada una impresora, esto quiere decir que la salida puede ser un archivo PostScript o PDF, que necesitaría un software adicional de interpretación. Hay varios formateadores XSL-FO que se usan comúnmente para generar PDF. Bibliografía
Mapa de navegación / Tabla de contenido / Mapa conceptual / Tabla de documentos / Buscador / Bibliografía utilizada / Glosario de Términos / Índice Temático / Índice de Autores
|