Objetos con formato XSL

Lenguaje de marcado
Objetos con formato XSL
Extensión de nombre de archivo
.xml, .fo
Tipo de medio de Internetapplication/xml,
text/xml (en desuso)
Identificador de tipo uniforme (UTI)público.xml
Desarrollado porConsorcio de la World Wide Web (W3C)
Último lanzamiento
1.1
5 de diciembre de 2006 ; hace 17 años ( 5 de diciembre de 2006 )
Tipo de formatoLenguaje de marcado
Contenido porXML
¿ Formato abierto ?
Sitio webwww.w3.org/TR/xsl11/

XSL-FO ( XSL Formatting Objects ) es un lenguaje de marcado para el formato de documentos XML que se utiliza con mayor frecuencia para generar archivos PDF . XSL-FO es parte de XSL (Extensible Stylesheet Language), 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.

El W3C considera que XSL-FO está completo en cuanto a sus características: [1] la última actualización del borrador de trabajo fue en enero de 2012, y su grupo de trabajo 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 tiene marcado semántico como se usa este término en HTML. Y, a diferencia de CSS que modifica la presentación predeterminada de un documento XML o HTML externo, almacena todos los datos del documento dentro de sí mismo.

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 escribiendo una por sí mismo o encontrando una para el tipo de documento en cuestión. Esta transformación XSLT convierte el XML en XSL-FO.

Una vez que se genera el documento XSL-FO, se pasa a una aplicación llamada procesador FO. Los procesadores FO convierten el documento XSL-FO en algo que se puede leer, imprimir o ambas cosas. La salida más común de XSL-FO es un archivo PDF o PostScript , pero algunos procesadores FO pueden generar otros formatos como archivos RTF o incluso una ventana en la interfaz gráfica de usuario que muestra la secuencia de páginas y su contenido.

El lenguaje XSLT en sí fue concebido originalmente sólo para este propósito; ahora se usa ampliamente para transformaciones XML más generales. Este paso de transformación se da tan por sentado en XSL-FO que no es raro que la gente llame al XSLT que convierte XML en XSL-FO el documento XSL-FO en sí. Incluso los tutoriales sobre XSL-FO tienden a estar escritos con comandos XSLT en torno a 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 contenidos, referencias vinculadas, un índice y varias otras posibilidades.

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

Por ejemplo, algunos procesadores FO pueden dividir palabras con guiones para minimizar el espacio al dividir una línea, mientras que otros optan por no hacerlo. Diferentes procesadores pueden incluso utilizar diferentes algoritmos de división de palabras, que van desde algoritmos muy simples hasta algoritmos más complejos que tienen en cuenta si la línea anterior o la siguiente también están divididas con guiones. Estos cambiarán, en algunos casos límite de manera bastante sustancial, el diseño de las distintas páginas. Hay otros casos en los que la especificación XSL-FO permite explícitamente a los procesadores FO cierto grado de elección con respecto al diseño.

Esta diferenciación entre procesadores FO, que crea resultados inconsistentes entre procesadores, no suele ser un problema. Esto se debe a que el propósito general detrás de XSL-FO es generar medios impresos paginados. Los documentos XSL-FO en sí mismos se utilizan generalmente como intermediarios, principalmente para generar archivos PDF o un documento impreso como el formato final para ser distribuido. Esto es a diferencia de cómo se genera HTML y se distribuye como un formato final directamente al usuario. Distribuir el PDF final en lugar de la entrada del lenguaje de formato (ya sea HTML/CSS o XSL-FO) significa, por un lado, que los destinatarios no se ven afectados por la imprevisibilidad resultante de las diferencias entre los intérpretes del lenguaje de formato, mientras que, por otro lado, significa que el documento no se puede adaptar fácilmente a las diferentes necesidades del destinatario, como un tamaño de página diferente o un tamaño de fuente preferido, o la adaptación para la presentación en pantalla frente a la presentación en papel frente a la presentación en audio.

Conceptos del lenguaje

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

El formato FO funciona mejor para lo que se podría llamar un diseño "basado en el contenido". Este es el método estándar de diseño para libros, artículos, documentos legales, etc. Implica un único fragmento de texto bastante contiguo, con información repetida incorporada en los márgenes de una página. Esto es lo opuesto al diseño "basado en el diseño", que se utiliza en periódicos o revistas. Si el contenido de esos documentos no cabe en el espacio requerido, se recorta una parte hasta que cabe. XSL-FO no maneja fácilmente las estrictas restricciones del diseño de revistas; de hecho, en muchos casos, carece de la capacidad de expresar algunas formas de dicho diseño.

A pesar de la naturaleza básica del diseño del lenguaje, es capaz de ofrecer una gran expresividad. Están disponibles tablas, listas, elementos flotantes laterales y una variedad de otras características. Estas características son comparables a las características de diseño de CSS, aunque se espera que algunas de esas características sean creadas por XSLT.

Estructura del documento

Los documentos XSL-FO son documentos XML, pero no tienen por qué cumplir ninguna DTD ni ningún esquema, sino que 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 llena el contenido en las distintas páginas.

Los diseños de página definen las propiedades de la página. Pueden definir las direcciones en las que se debe escribir el texto, de modo que se ajusten a las convenciones del idioma en cuestión. Definen el tamaño de una página, así como los márgenes de esa página. Y lo que es más importante, pueden definir secuencias de páginas que permiten lograr efectos en los que 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 internos para fines de impresión; esto permite dar más espacio al margen donde se encuadernará el libro.

La parte de datos del documento se divide en una secuencia de flujos, donde cada flujo está 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 agregar contenido a los márgenes del documento, para números de página, títulos de capítulos y similares.

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

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

Capacidades de XSL-FO v1.0

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

Varias columnas

Se puede definir una página para que tenga varias columnas. Cuando este es el caso, los bloques pasan de una columna a la siguiente de forma predeterminada. Se pueden configurar bloques individuales para que abarquen todas las columnas, creando un salto de texto en la página. Las columnas que se encuentran por encima de este salto se unirán entre sí, al igual que las columnas que se encuentran por debajo del salto. Sin embargo, no se permite que el texto pase de la sección superior a la sección inferior.

Debido a la naturaleza de la especificación de páginas de XSL-FO, es posible que varias páginas tengan diferentes cantidades y anchos de columnas. Por lo tanto, el texto puede pasar de una página de 3 columnas a una de 5 columnas y luego a una de 1 columna con bastante facilidad.

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 y padding-after.

Liza

Una lista XSL-FO es, esencialmente, dos conjuntos de bloques apilados uno al lado del otro. Una entrada consta de un bloque a la "izquierda", o dirección inicial en línea, y una secuencia de bloques a la "derecha", o dirección final en línea. El bloque de la izquierda es conceptualmente lo que sería el número o la viñeta en una lista. Sin embargo, podría ser fácilmente una cadena de texto, como se puede ver en una entrada de glosario. El bloque de la derecha funciona como se espera. Ambos bloques pueden ser contenedores de bloques o tener múltiples bloques en una sola entrada de lista.

Se espera que la numeración de las listas XSL-FO, cuando estén numeradas, la realice el XSLT o cualquier otro proceso que haya generado 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 Widow y Orphan para los bloques o para el flujo en sí, y permitir que los atributos se distribuyan en cascada en bloques secundarios. Además, se puede especificar que los bloques se mantengan juntos en una sola página. Por ejemplo, un bloque de imagen y la descripción de esa imagen se pueden configurar para que nunca se separen. El procesador FO hará todo lo posible por cumplir con estos comandos, incluso si requiere crear una gran cantidad de espacio vacío en una página.

Notas al pie

El usuario puede crear notas al pie que aparecen al final de una página. La nota al pie se escribe, en el documento FO, en el flujo de texto normal 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 es uno o más bloques que el procesador FO coloca al final de la página. El procesador FO garantiza que, independientemente de dónde se encuentre la referencia, la nota al pie citada por esa referencia comenzará en la misma página. Esto será así incluso si significa crear un espacio vacío adicional en una página.

Tablas

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

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

Controles de orientación del texto

FO cuenta con amplios controles para orientar bloques de texto. Se puede, en medio de una página, designar un bloque de texto para que se oriente en una orientación diferente. Estos bloques orientados se pueden utilizar para idiomas con una orientación diferente a la del resto del documento, o simplemente si se necesita orientar el texto para fines de diseño. Estos bloques pueden contener prácticamente cualquier tipo de contenido, desde tablas hasta listas o incluso otros bloques de texto reorientado.

Misceláneas

  • Citas por número de página. Se puede citar en el texto una página que contenga una etiqueta especial y el procesador de FO completará el número de página real donde aparece esta etiqueta.
  • Bordes de bloque, en varios estilos.
  • Colores e imágenes de fondo.
  • Controles de fuentes 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 agrega una serie de nuevas características a la versión 1.0.

Flujos múltiples y mapeo de flujo

XSL-FO 1.0 era bastante restrictivo en cuanto a qué texto se permitía incluir en qué áreas de una página. La versión 1.1 flexibiliza significativamente estas restricciones, permitiendo que el texto fluido se asigne a múltiples regiones explícitas de una página. Esto permite una composición tipográfica más parecida a la de un periódico.

Marcadores

Muchos formatos de salida para procesadores XSL-FO, en especial PDF, tienen funciones de marcadores. Estas permiten que el formato especifique una cadena de texto en una ventana separada que el usuario puede seleccionar. Cuando se selecciona, la ventana del documento se desplaza inmediatamente a una región específica del documento.

XSL-FO v1.1 ahora proporciona la capacidad de crear marcadores con nombre en XSL-FO, lo que permite al procesador pasar esto a un formato de salida que lo admita.

Indexación

XSL-FO 1.1 tiene características que permiten generar un índice que puede encontrarse al final de un libro. Esto se hace mediante la referencia a elementos correctamente marcados en el documento FO.

Cita de la última página

La última página se puede generar sin proporcionar una referencia explícita en el documento a un ancla específica en el documento FO. La definición de "última página" se puede restringir a un conjunto específico de páginas o para cubrir todo el documento. Esto permite al usuario especificar algo como "Página 2 de 15", donde página 15 es el número de página de una definición de ú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 "tabla continua".

Flotadores interiores/exteriores

XSL-FO 1.1 añade las palabras clave "inside" y "outside" para los márgenes laterales, lo que permite lograr diseños de página con márgenes ubicados en los bordes externos o internos de las páginas. Inside se refiere al lado de la página que está hacia la encuadernación del libro, y outside se refiere al lado de una página que está alejado de la encuadernación del libro.

Tamaño gráfico refinado

XSL-FO 1.1 perfecciona la funcionalidad para ajustar el tamaño de los gráficos, con la capacidad de encogerse para ajustarse (pero no de crecer para ajustarse), así como la capacidad de definir pasos de escala específicos. Además, se puede hacer referencia al factor de escala resultante para su visualización (por ejemplo, para decir en el título de una figura, "la imagen mostrada tiene un tamaño real del 50%)

Ventajas

  • Lenguaje XML : como es un lenguaje XML, solo se necesita una transformación XSLT (y un procesador XSLT) para generar código XSL-FO a partir de cualquier lenguaje XML. Se puede escribir fácilmente un documento en TEI o DocBook y transformarlo en HTML para verlo en la Web o en PDF (a través de un procesador FO) para imprimir. De hecho, ya existen muchos XSLT TEI y DocBook para ambos propósitos.
  • Facilidad de uso : otra ventaja de XSL-FO es su relativa facilidad de uso. Gran parte de la funcionalidad del lenguaje se basa en el trabajo de CSS, por lo que un usuario de CSS estará familiarizado con los conceptos básicos de los atributos de marcado. Comprender cómo se verá una sección específica de un documento FO suele ser bastante fácil.
  • Bajo costo : en comparación con los productos comerciales de composición tipográfica y diseño de páginas, XSL-FO puede ofrecer una solución de costo mucho menor cuando cumple con los requisitos tipográficos y de diseño (ver a continuación). El costo inicial de propiedad es bajo (cero si las implementaciones gratuitas, como Apache FOP y xmlroff, cumplen con sus requisitos), especialmente en comparación con el costo de las herramientas de composición comerciales. Las habilidades requeridas (principalmente programación XSLT) están ampliamente disponibles. Hay una serie de buenos libros 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 por humanos y las implementaciones han logrado en gran medida ese objetivo. Esto hace que XSL-FO sea especialmente adecuado para redactar documentos localizados en una gran cantidad de idiomas nacionales donde el requisito es tener un único conjunto de herramientas que pueda redactar todas las versiones lingüísticas de los documentos. Esto es especialmente 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 porque esas partes del mundo representan enormes mercados para productos como teléfonos móviles y periféricos de computadora.
  • Estándar maduro : con la publicación de XSL-FO 1.1, XSL-FO demuestra ser un estándar maduro con una serie de implementaciones comerciales y no comerciales sólidas. No existe ningún otro estándar comparable para la composición de páginas.

Desventajas

  • Capacidades limitadas : XSL-FO fue diseñado específicamente para cumplir con los requisitos de documentos "diseñados de manera liviana", tipificados por manuales técnicos, documentos comerciales, facturas, etc. Si bien se puede usar y se usa para diseños más sofisticados, está inherentemente limitado en lo que puede hacer desde una perspectiva tipográfica y de diseño. En particular, XSL-FO no proporciona una manera directa de obtener efectos de formato que dependan de conocer la relación de posición de página de dos objetos de formato. Por ejemplo, no hay una manera directa de decir "si esto está en la misma página que aquello, 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 basado en transformaciones de dos etapas que usa XSL-FO. Esta limitación se puede abordar implementando un proceso de múltiples pasadas. Desafortunadamente, actualmente no existe un estándar sobre cómo se comunicaría el resultado de la primera pasada a la segunda. La mayoría de las implementaciones, si no todas, proporcionan alguna forma de formato de resultado intermedio procesable que se puede usar para esto, pero cualquier proceso de este tipo implementado hoy en día, por necesidad, sería específico de la implementación.
  • De la misma manera, hay características de diseño importantes que simplemente no están en XSL-FO, ya sea porque no tenían la suficiente prioridad o porque diseñarlas fue demasiado difícil para permitir su inclusión en la versión 1.1, o porque no hubo suficientes implementaciones para permitir su inclusión en la especificación final según las reglas del W3C.
  • Además de estas limitaciones arquitectónicas, las implementaciones actuales de XSL-FO, tanto comerciales como de código abierto, no proporcionan el mismo nivel de sofisticación tipográfica que ofrecen las herramientas de diseño de gama alta como QuarkXPress o InDesign , o 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 estén alineadas verticalmente. No hay nada en la especificación XSL-FO que lo impida, pero tampoco nada que lo exija. Para la mayoría de los documentos para los que una solución de composición completamente automatizada es suficiente, ese nivel de sofisticación tipográfica no es necesario. Sin embargo, para publicaciones de gama alta y libros para el mercado masivo, normalmente sí lo es; en algunos casos, esto se puede lograr 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, se deben considerar las extensiones propietarias proporcionadas por las diferentes implementaciones de XSL-FO. Estas extensiones agregan características que no son parte de la especificación principal. Por ejemplo, un producto agrega compatibilidad con las convenciones tipográficas japonesas que la especificación XSL-FO no aborda. Sin embargo, el uso de estas características hace que un sistema XSL-FO de este tipo esté un poco más ligado a una implementación específica (pero no completamente ligado como lo estaría al usar un sistema de composición totalmente propietario).
  • Edición manual poco práctica : por lo general, no resulta práctico editar instancias XSL-FO a mano (XSL-FO se diseñó para brindar claridad y completitud, no para facilitar la 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). XF Designer ya no es un producto compatible de Ecrion Software.

Al intentar decidir si XSL-FO funcionará o no para un documento determinado, los siguientes requisitos tipográficos y de diseño generalmente indican que XSL-FO no funcionará (aunque algunos de ellos pueden satisfacerse mediante extensiones propietarias):

  • Es necesario reiniciar los números de notas al pie o la secuencia de símbolos en cada nueva página (sin embargo, algunas implementaciones proporcionan extensiones para admitir la numeración automática de notas al pie).
  • Es necesario ejecutar texto alrededor de ambos lados de un objeto flotante (XSL-FO puede ejecutar texto alrededor de un lado y de la parte superior y/o inferior, pero no de ambos lados; sin embargo, algunas implementaciones brindan soporte para diseños tan complejos a través de extensiones propietarias).
  • Es necesario tener un número variable de columnas en una sola página (sin embargo, al menos dos implementaciones comerciales proporcionan extensiones para crear bloques de múltiples columnas dentro de una página).
  • Es necesario tener notas al pie de columna (varias implementaciones proporcionan extensiones de notas al pie de columna).
  • Es necesario tener notas marginales que se coloquen dinámicamente en relación con otras notas marginales (por ejemplo, notas marginales que estén espaciadas de manera uniforme en forma vertical en la página). XSL-FO solo proporciona funciones para colocar notas marginales de manera que estén alineadas 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).
  • Necesita contenido flotante y notas a pie de página en la misma página.
  • Es necesario poder ejecutar texto contra una curva arbitraria (aunque algunas implementaciones admiten SVG , que se puede usar para evitar esta limitación).
  • Es necesario poder restringir las líneas a cuadrículas de base específicas (por ejemplo, para lograr un registro exacto de las líneas en páginas opuestas).
  • Cualquier cosa que requiera un diseño que tenga en cuenta la página, como por ejemplo garantizar que una figura siempre aparezca en la página orientada hacia su punto de anclaje.

Reemplazo

Estándares XML y HTML , con el estándar CSS , ya que CSS2 (módulo de medios paginados) comienza a proporcionar características básicas a los 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 a XSL-FO.

Las notas de diseño para una versión 2.0 de 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
  • Antenna House Formatter : 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. ^ ab Quin, Liam (2 de noviembre de 2013). "Re: [xsl] ¿xsl 2.0?". XSL-List – Foro abierto sobre XSL (lista de correo). {{cite mailing list}}: Enlace externo en |mailing-list=( ayuda )
  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: sitio de referencia creado por Dave Pawson
  • Tutorial y ejemplos de XSL-FO
  • Tutorial de formateo de objetos XSL
  • aXSL: API de código abierto para procesar documentos XSL-FO
  • FOray: implementación de código abierto y libre de regalías de XSL-FO, utilizando las interfaces aXSL
  • Introducción y ejemplos de XSL-FO
  • FO.NET - Renderizador de XSL-FO a PDF para .NET
Obtenido de "https://es.wikipedia.org/w/index.php?title=Objetos_de_formato_XSL&oldid=1248920479"