Articulo de referencia

Objetos de formato XSL

application/xml , text/xml  (deprecated)"},"_nomimecode":{"wt":"yes"},"type code":{"wt":""},"uniform type":{"wt":"public.xml"},"magic":{"wt":""},"owner":{"wt":"[[World Wide...

XSL-FO ( Objetos de Formato XSL ) es un lenguaje de marcado para el formato de documentos XML que se utiliza principalmente para generar archivos PDF . XSL-FO forma parte de XSL (Lenguaje de Hojas de Estilo Extensible), un conjunto de tecnologías del W3C diseñadas para la transformación y el formato de datos XML. Las otras partes de XSL son XSLT y XPath . La versión 1.1 de XSL-FO se publicó en 2006.

XSL-FO es considerado completo en cuanto a funcionalidades por el W3C: [ 1 ] la última actualización del borrador de trabajo fue en enero de 2012 y su grupo de trabajo se cerró en noviembre de 2013. [ 2 ]

Lo esencial

A diferencia de la combinación de HTML y CSS , XSL-FO es un lenguaje de presentación unificado. No utiliza marcado semántico tal como se entiende en HTML. Además, a diferencia de CSS, que modifica la presentación predeterminada de un documento XML o HTML externo, almacena todos los datos del documento en su interior.

La idea general detrás del uso de XSL-FO es que el usuario escribe un documento, no en FO, sino en un lenguaje XML. XHTML , DocBook y TEI son ejemplos posibles. Luego, el usuario obtiene una transformación XSLT , ya sea escribiéndola él mismo o buscando una para el tipo de documento en cuestión. Esta transformación XSLT convierte el XML a XSL-FO.

Una vez generado el documento XSL-FO, se pasa a una aplicación llamada procesador FO. Los procesadores FO convierten el documento XSL-FO en un formato legible, imprimible o ambos. El formato de salida más común para XSL-FO es un archivo PDF o PostScript , pero algunos procesadores FO pueden generar otros formatos, como archivos RTF , o incluso mostrar una ventana en la interfaz gráfica del usuario con la secuencia de páginas y su contenido.

El lenguaje XSLT se concibió originalmente solo para este propósito; ahora se utiliza ampliamente para transformaciones XML más generales. Este paso de transformación se da por sentado en XSL-FO, hasta el punto de que no es raro que se llame al XSLT que convierte XML en XSL-FO el propio documento XSL-FO. Incluso los tutoriales sobre XSL-FO suelen estar escritos con comandos XSLT alrededor de las instrucciones de procesamiento de FO.

El paso de transformación XSLT es excepcionalmente potente. Permite la generación automática de una tabla de contenido, referencias vinculadas, un índice y otras posibilidades.

Un documento XSL-FO no es como un PDF o un documento PostScript. No describe de forma definitiva la disposición del texto en las distintas páginas. En cambio, describe el aspecto de las páginas y la ubicación de los diferentes contenidos. A partir de ahí, un procesador FO determina cómo posicionar el texto dentro de los límites definidos por el documento FO. La especificación XSL-FO incluso permite que distintos procesadores FO tengan respuestas diferentes con respecto a las páginas generadas.

Por ejemplo, algunos procesadores de FO pueden dividir las palabras con guiones para minimizar el espacio al dividir una línea, mientras que otros optan por no hacerlo. Incluso, distintos procesadores pueden usar diferentes algoritmos de división de palabras, desde muy simples hasta algoritmos más complejos que consideran si la línea anterior o la siguiente también están divididas con guiones. Esto modificará, en algunos casos límite, de forma sustancial, el diseño de las distintas páginas. Existen otros casos en los que la especificación XSL-FO permite explícitamente a los procesadores de FO cierto grado de libertad en cuanto al diseño.

Esta diferenciación entre procesadores FO, que genera resultados inconsistentes entre ellos, no suele ser un problema. Esto se debe a que el propósito general de XSL-FO es generar medios impresos paginados. Los documentos XSL-FO se utilizan normalmente como intermediarios, principalmente para generar archivos PDF o un documento impreso como formato final para su distribución. Esto contrasta con la forma en que HTML se genera y distribuye como formato final directamente al usuario. Distribuir el PDF final en lugar del lenguaje de formato de entrada (ya sea HTML/CSS o XSL-FO) implica, por un lado, que los destinatarios no se ven afectados por la imprevisibilidad derivada de las diferencias entre los intérpretes del lenguaje de formato, mientras que, por otro lado, significa que el documento no puede adaptarse fácilmente a las diferentes necesidades del destinatario, como un tamaño de página o de fuente diferente, o la adaptación para presentaciones en pantalla, en papel o en audio.

conceptos del lenguaje

El lenguaje XSL-FO fue diseñado para medios paginados; por lo tanto, el concepto de páginas es una parte integral de la estructura de XSL-FO.

FO funciona mejor para lo que podría llamarse diseño "orientado al contenido". Este es el método estándar de maquetación para libros, artículos, documentos legales, etc. Consiste en un único bloque de texto continuo, con información repetitiva integrada en los márgenes de la página. Esto contrasta con el diseño "orientado a la maquetación", que se utiliza en periódicos o revistas. Si el contenido de estos documentos no cabe en el espacio requerido, se recorta hasta que se ajuste. XSL-FO no maneja fácilmente las estrictas restricciones de la maquetación de revistas; de hecho, en muchos casos, carece de la capacidad de expresar algunas formas de dicha maquetación.

A pesar de la sencillez de su diseño, el lenguaje ofrece una gran expresividad. Dispone de tablas, listas, elementos flotantes laterales y diversas funcionalidades. Estas funcionalidades son comparables a las de diseño de CSS, aunque se espera que algunas de ellas se implementen mediante XSLT.

Estructura del documento

Los documentos XSL-FO son documentos XML, pero no tienen por qué ajustarse a ningún DTD o esquema. En cambio, se ajustan a una sintaxis definida en la especificación XSL-FO .

Los documentos XSL-FO contienen dos secciones obligatorias. La primera sección detalla una lista de diseños de página con nombre. La segunda sección es una lista de datos del documento, con marcado, que utiliza los distintos diseños de página para determinar cómo se distribuye el contenido en las diferentes páginas.

El diseño de página define las propiedades de la página. Permite definir la dirección del flujo del texto para que coincida con las convenciones del idioma en cuestión. Define el tamaño de la página, así como sus márgenes. Y lo que es más importante, permite definir secuencias de páginas que crean efectos donde las páginas pares e impares se ven diferentes. Por ejemplo, se puede definir una secuencia de diseño de página que otorgue espacio adicional a los márgenes interiores para la impresión; esto permite destinar más espacio al margen donde se encuadernará el libro.

La sección de datos del documento se divide en una secuencia de flujos, cada uno asociado a un diseño de página. Los flujos contienen una lista de bloques que, a su vez, contienen una lista de datos de texto, elementos de marcado en línea o una combinación de ambos. También se puede añadir contenido a los márgenes del documento, como números de página, títulos de capítulos, etc.

Los bloques y los elementos en línea funcionan de forma muy similar a como lo hacen en CSS, aunque algunas reglas de relleno y márgenes difieren entre FO y CSS. La dirección, con respecto a la orientación de la página, para la progresión de bloques y elementos en línea se puede especificar completamente, lo que permite que los documentos FO funcionen en idiomas que se leen de forma distinta al inglés. El lenguaje de la especificación FO, a diferencia del de CSS 2.1, utiliza términos neutros en cuanto a la dirección, como inicio y fin, en lugar de izquierda y derecha, para describir dichas direcciones.

El marcado de contenido básico de XSL-FO deriva de CSS y sus reglas en cascada. Por lo tanto, muchos atributos en XSL-FO se propagan a los elementos secundarios a menos que se sobrescriban explícitamente.

Capacidades de XSL-FO v1.0

XSL-FO es capaz de ofrecer una gran cantidad de funcionalidades de diseño de texto. Además de la información especificada anteriormente, el lenguaje de XSL-FO permite especificar lo siguiente.

Varias columnas

Una página puede tener varias columnas. En ese caso, los bloques fluyen de una columna a la siguiente por defecto. Se pueden configurar bloques individuales para que abarquen todas las columnas, creando un salto de línea en la página. Las columnas que se encuentran encima de este salto de línea se enlazan entre sí, al igual que las que se encuentran debajo. Sin embargo, no se permite que el texto fluya de la sección superior a la inferior.

Debido a la naturaleza de la especificación de página de XSL-FO, varias páginas pueden tener diferentes números y anchos de columnas. Por lo tanto, el texto puede pasar fácilmente de una página de 3 columnas a una de 5 columnas y luego a una de 1 columna.

Todas las funciones de FO funcionan dentro de las restricciones de una página de varias columnas.

Podemos abarcar varias columnas especificando dos atributos, es decir, span, padding-after.

Liza

Una lista XSL-FO consiste, esencialmente, en dos conjuntos de bloques apilados uno al lado del otro. Cada entrada se compone de un bloque a la izquierda (inicio de la lista) y una secuencia de bloques a la derecha (fin de la lista). El bloque de la izquierda representa conceptualmente el número o la viñeta de una lista. Sin embargo, también podría ser una cadena de texto, como la que se encuentra en una entrada de glosario. El bloque de la derecha funciona como se espera. Ambos bloques pueden ser contenedores de bloques o contener varios bloques en una misma entrada de la lista.

Cuando se numeran las listas XSL-FO, se espera que la realice la herramienta XSLT, o cualquier otro proceso, que generó el documento XSL-FO. Por lo tanto, las listas numeradas deben estar numeradas explícitamente en XSL-FO.

Controles de paginación

El usuario puede especificar bloques viudos y huérfanos para los bloques o para el flujo en sí, y permitir que los atributos se propaguen a los bloques secundarios. Además, se puede especificar que los bloques permanezcan juntos en una sola página. Por ejemplo, se puede configurar un bloque de imagen y su descripción para que nunca se separen. El procesador FO hará todo lo posible por cumplir con estas instrucciones, incluso si esto implica crear una gran cantidad de espacio en blanco en la página.

Notas a pie de página

El usuario puede crear notas al pie que aparecen al final de la página. La nota se inserta en el documento FO, dentro del flujo normal del texto, en el punto donde se hace referencia a ella. La referencia se representa como una definición en línea, aunque no es obligatoria. El cuerpo consta de uno o más bloques que el procesador FO coloca al final de la página. El procesador FO garantiza que, independientemente de la ubicación de la referencia, la nota al pie citada por esta comenzará en la misma página. Esto se aplica incluso si implica crear espacio adicional en blanco.

Tablas

Una tabla FO funciona de forma muy similar a una tabla HTML/CSS. El usuario especifica las filas de datos para cada celda. También puede especificar información de estilo para cada columna, como el color de fondo. Además, puede configurar la primera fila como encabezado de tabla, con su propio estilo.

Se le puede indicar al procesador FO cuánto espacio debe asignar a cada columna, o bien se le puede indicar que ajuste automáticamente el texto en la tabla.

Controles de orientación del texto

FO ofrece amplios controles para orientar bloques de texto. En medio de una página, se puede designar un bloque de texto con una orientación diferente. Estos bloques orientados pueden utilizarse para idiomas con una orientación distinta a la del resto del documento, o simplemente para orientar el texto con fines de maquetación. Estos bloques pueden contener prácticamente cualquier tipo de contenido, desde tablas y listas hasta otros bloques de texto con orientación modificada.

Misceláneas

  • Citas de números de página. Una página que contiene una etiqueta especial puede citarse en el texto, y el procesador FO completará el número de página real donde aparece esta etiqueta.
  • Bordes de bloques, en varios estilos.
  • Colores e imágenes de fondo.
  • Controles de fuente y ponderación, como en CSS.
  • Flotadores laterales.
  • Elementos en línea varios.

Capacidades de XSL-FO v1.1

La versión 1.1 de XSL-FO añade una serie de nuevas características a la versión 1.0.

Múltiples flujos y mapeo de flujos

XSL-FO 1.0 era bastante restrictivo en cuanto al texto que podía ubicarse en cada área de una página. La versión 1.1 flexibiliza significativamente estas restricciones, permitiendo que el texto fluido se asigne a múltiples regiones específicas de una página. Esto posibilita una composición tipográfica más similar a la de un periódico.

Marcadores

Muchos formatos de salida para procesadores XSL-FO, en particular PDF, incluyen marcadores. Estos permiten especificar una cadena de texto en una ventana aparte que el usuario puede seleccionar. Al seleccionarla, la ventana del documento se desplaza inmediatamente a una región específica del mismo.

XSL-FO v1.1 ahora ofrece la posibilidad de crear marcadores con nombre en XSL-FO, lo que permite al procesador transmitir esta información a un formato de salida que la admita.

Indexación

XSL-FO 1.1 incluye funciones que permiten generar un índice similar al que se encuentra al final de un libro. Esto se logra mediante la referencia a elementos debidamente marcados en el documento FO.

Cita de la última página

La última página se puede generar sin necesidad de proporcionar una referencia explícita a un ancla específica en el documento FO. La definición de "última página" puede restringirse a un conjunto específico de páginas o abarcar todo el documento. Esto permite al usuario especificar, por ejemplo, "Página 2 de 15", donde la página 15 es el número de página de la definición de la última página.

Marcadores de mesa

Los marcadores de tabla permiten al usuario crear contenido dinámico dentro de los encabezados y pies de página de las tablas, como totales acumulados en la parte inferior de cada página de una tabla o indicadores de "continuación de la tabla".

Flotadores interiores/exteriores

XSL-FO 1.1 añade las palabras clave "inside" y "outside" para los márgenes laterales, lo que permite crear diseños de página con márgenes situados en los bordes exteriores o interiores de las páginas. "Inside" se refiere al lado de la página que da al lomo del libro, y "outside" al lado opuesto.

Tamaño gráfico refinado

XSL-FO 1.1 perfecciona la funcionalidad para ajustar el tamaño de los gráficos, permitiendo reducirlos para que se ajusten (pero no ampliarlos), así como definir pasos de escala específicos. Además, el factor de escala resultante puede utilizarse como referencia para su visualización (por ejemplo, para indicar en el pie de figura: «la imagen mostrada tiene el 50 % de su tamaño real»).

Ventajas

  • Lenguaje XML : Al ser un lenguaje XML, solo se requiere una transformación XSLT (y un procesador XSLT) para generar código XSL-FO a partir de cualquier lenguaje XML. Es fácil escribir un documento en TEI o DocBook y transformarlo a HTML para su visualización web o a PDF (mediante un procesador FO) para su impresión. De hecho, existen numerosas transformaciones XSLT preexistentes para TEI y DocBook que permiten ambos fines.
  • Facilidad de uso : Otra ventaja de XSL-FO es su relativa facilidad de uso. Gran parte de la funcionalidad del lenguaje se basa en CSS, por lo que un usuario de CSS estará familiarizado con los atributos básicos del marcado. Entender cómo se verá una sección específica de un documento FO suele ser bastante sencillo.
  • Bajo costo : En comparación con los productos comerciales de composición tipográfica y maquetación, XSL-FO ofrece una solución mucho más económica si cumple con los requisitos tipográficos y de maquetación (véase más abajo). El costo inicial de adquisición es bajo (cero si las implementaciones gratuitas, como Apache FOP y xmlroff , satisfacen sus necesidades), especialmente si se compara con el costo de las herramientas de composición comerciales. Las habilidades necesarias (principalmente programación XSLT) están ampliamente disponibles. Existen numerosos libros de calidad sobre XSL-FO, así como recursos en línea y una comunidad de usuarios activa.
  • Multilingüe : XSL-FO se ha diseñado para funcionar con todos los idiomas escritos y las implementaciones han logrado este objetivo en gran medida. Esto hace que XSL-FO sea especialmente adecuado para la creación de documentos localizados a un gran número de idiomas nacionales, donde se requiere un conjunto único de herramientas que permita crear todas las versiones lingüísticas de los documentos. Esto resulta particularmente valioso para la documentación técnica de productos como la electrónica de consumo, donde los idiomas asiáticos y de Oriente Medio son importantes, ya que esas regiones representan enormes mercados para productos como teléfonos móviles y periféricos informáticos.
  • Estándar consolidado : Con la publicación de XSL-FO 1.1, XSL-FO demuestra ser un estándar consolidado con numerosas implementaciones sólidas, tanto comerciales como no comerciales. No existe otro estándar comparable para la composición de páginas.

Desventajas

  • Capacidades limitadas : XSL-FO se diseñó específicamente para satisfacer los requisitos de documentos de diseño sencillo, como manuales técnicos, documentos comerciales, facturas, etc. Si bien puede utilizarse para diseños más sofisticados, presenta limitaciones inherentes en cuanto a diseño y tipografía. En particular, XSL-FO no ofrece una forma directa de obtener efectos de formato que dependan de la posición en la página de dos objetos de formato. Por ejemplo, no existe una forma directa de indicar "si este elemento está en la misma página que aquel, entonces haz X; de lo contrario, haz Y". Esta es una decisión de diseño explícita que refleja el modelo de procesamiento abstracto de dos etapas basado en transformaciones que utiliza XSL-FO. Esta limitación puede solucionarse implementando un proceso de múltiples pasadas. Lamentablemente, actualmente no existe un estándar sobre cómo se comunica el resultado de la primera pasada a la segunda. La mayoría de las implementaciones, si no todas, proporcionan algún formato de resultado intermedio procesable que puede utilizarse para este fin, pero cualquier proceso de este tipo implementado hoy en día sería, necesariamente, específico de la implementación.
  • Del mismo modo, existen características de diseño importantes que simplemente no están presentes en XSL-FO, ya sea porque no tenían la prioridad suficiente, porque diseñarlas era demasiado difícil para permitir su inclusión en la versión 1.1 o porque no existían suficientes implementaciones para permitir su inclusión en la especificación final según las normas del W3C.
  • Además de estas limitaciones arquitectónicas, las implementaciones actuales de XSL-FO, tanto comerciales como de código abierto, no ofrecen el mismo nivel de sofisticación tipográfica que las herramientas de maquetación de alta gama como QuarkXPress o InDesign , ni que los sistemas de composición tipográfica programables como LaTeX . Por ejemplo, ninguna implementación actual ofrece funciones para garantizar que las líneas de texto en páginas enfrentadas se alineen verticalmente. La especificación XSL-FO no lo impide, pero tampoco lo exige. Para la mayoría de los documentos que requieren una solución de composición totalmente automatizada, ese nivel de sofisticación tipográfica no es necesario. Sin embargo, para publicaciones de alta gama y libros de gran tirada, suele serlo; en algunos casos, esto se puede solucionar utilizando XSLT para generar un documento LaTeX .
  • Dependencia de extensiones : Al considerar la aplicabilidad de XSL-FO a un documento o diseño de documento en particular, es necesario tener en cuenta las extensiones propietarias que ofrecen las diferentes implementaciones de XSL-FO. Estas extensiones añaden funcionalidades que no forman parte de la especificación principal. Por ejemplo, un producto añade compatibilidad con las convenciones tipográficas japonesas que la especificación XSL-FO no contempla. Sin embargo, el uso de estas funcionalidades hace que dicho sistema XSL-FO dependa un poco más de una implementación específica (aunque no completamente, como ocurriría al usar un sistema de composición totalmente propietario).
  • Edición manual poco práctica : En general, editar instancias XSL-FO manualmente resulta poco práctico (XSL-FO se diseñó para brindar claridad y exhaustividad, no facilidad de edición). Las herramientas de edición visual, como XFDesigner, pueden facilitar la tarea, aunque no todas las etiquetas XSL-FO son accesibles (especialmente los marcadores y las notas al pie). Ecrion Software ya no ofrece soporte para XF Designer.

Al intentar decidir si XSL-FO funcionará o no para un documento determinado, los siguientes requisitos tipográficos y de diseño suelen indicar que XSL-FO no funcionará (aunque algunos de ellos pueden ser satisfechos por extensiones propietarias):

  • Es necesario reiniciar la numeración de las notas al pie o la secuencia de símbolos en cada página nueva (sin embargo, algunas implementaciones ofrecen extensiones para admitir la numeración automática de las notas al pie).
  • Es necesario que el texto se muestre alrededor de ambos lados de un objeto flotante (XSL-FO puede mostrar texto alrededor de un lado y la parte superior y/o inferior, pero no de ambos lados; sin embargo, algunas implementaciones ofrecen soporte para diseños tan complejos mediante extensiones propietarias).
  • Es necesario tener un número variable de columnas en una sola página (sin embargo, al menos dos implementaciones comerciales ofrecen extensiones para crear bloques de varias columnas dentro de una página).
  • Es necesario tener notas al pie que ocupen toda la columna (varias implementaciones ofrecen extensiones para notas al pie que abarcan toda la columna).
  • Es necesario contar con anotaciones marginales que se posicionen dinámicamente con respecto a otras anotaciones marginales (por ejemplo, notas marginales espaciadas uniformemente verticalmente en la página). XSL-FO solo proporciona funciones para colocar las anotaciones marginales de manera que se alineen verticalmente con su ancla.
  • Es necesario crear contenido que se extienda a lo largo de dos páginas como un objeto flotante o "fuera de línea" en una secuencia homogénea de páginas maestras repetidas (esto se puede hacer en XSL-FO 1.1 usando múltiples regiones de cuerpo y mapas de flujo, pero requiere poder controlar las páginas maestras utilizadas para esas páginas).
  • Es necesario que tanto el contenido flotante en la parte inferior como las notas al pie estén en la misma página.
  • Es necesario poder ejecutar texto sobre una curva arbitraria (aunque algunas implementaciones admiten SVG , que puede usarse para sortear esta limitación).
  • Es necesario poder restringir las líneas a cuadrículas de línea base específicas (por ejemplo, para lograr un registro exacto de las líneas en páginas enfrentadas).
  • Cualquier cosa que requiera un diseño que tenga en cuenta la página, como asegurar que una figura siempre aparezca en la página que mira hacia su punto de anclaje.

Reemplazo

Estándares XML y HTML , junto con el estándar CSS , desde CSS2 ( módulo de medios paginados ) comienza a proporcionar características básicas para medios impresos. Con el Módulo de Medios Paginados CSS Nivel 3 , el W3C está completando la formulación de un estándar integrado para el formato de documentos y la generación de PDF. Así, desde 2013, [ 2 ] CSS3-paged es una propuesta del W3C para reemplazar XSL-FO.

Las notas de diseño para la versión 2.0 de los objetos de formato XSL se publicaron por primera vez en 2009 y se actualizaron por última vez en 2012. [ 3 ]

Véase también

  • XHTML
  • Apache FOP : implementación de XSL-FO de código abierto y libre de regalías.
  • XEP - Motor de renderizado comercial y propietario
  • Formateador de antenas - Software de formato XSL-FO y CSS - Motor de renderizado comercial y propietario

Referencias

  1. "Estado actual de XSL-FO - W3C" . www.w3.org . Consultado el 5 de agosto de 2016 .
  2. 1 2 Quin, Liam (2 de noviembre de 2013). "Re: [ xsl ] xsl 2.0?" . XSL-List – Foro abierto sobre XSL (Lista de correo).
  3. "Notas de diseño de XSL-FO 2.0 publicadas - W3C" . www.w3.org . Consultado el 9 de noviembre de 2018 .
  • Especificación XSL-FO 1.1 en W3C
  • Especificación XSL-FO 1.0 en W3C
  • ¿Qué es XSL-FO? en XML.com
  • Ejemplos y técnicas de FO Archivado el 10/05/2018 en Wayback Machine - Sitio de referencia creado por Dave Pawson
  • Tutorial y ejemplos de XSL-FO archivados el 5 de octubre de 2014 en Wayback Machine.
  • Tutorial sobre el formato de objetos XSL
  • aXSL : API de código abierto para el procesamiento de documentos XSL-FO.
  • FOray : implementación de código abierto y libre de regalías de XSL-FO, que utiliza las interfaces aXSL.
  • Introducción y ejemplos de XSL-FO
  • FO.NET Archivado el 2 de enero de 2018 en Wayback Machine : Convertidor de XSL-FO a PDF para .NET
Obtenido de " https://en.wikipedia.org/w/index.php?title=XSL_Formatting_Objects&oldid=1361730497 "