XSL-FO
-
Upload
aurora-gomez -
Category
Documents
-
view
217 -
download
0
description
Transcript of XSL-FO
XSLT-FOObjetos de formateo XSLT
Objetos de formateoTodas las etiquetas específicas de este lenguaje tienen que ver con elementos de maquetado:
● páginas
● párrafos
● bloques
● tablas…
Unidad básica de diseño: Objeto de formateo (fo)
XSL-FO usa áreas rectangulares para mostrar la salida. Cualquier salida (texto, imágenes,..) se
mostrará en estas áreas.
Tipos de áreas:
● Páginas
○ La salida de una transformación se organizará en páginas (múltiples para documentos
impresos, una de gran tamaño para navegadores)
○ Una página se compone de regiones
● Regiones
○ Toda página XSL-FO contiene unas regiones determinadas:
■ región-body (cuerpo de la página)
■ region-before, region-after (cabecera y pie de la página )
■ region-start, region-end (lateral izquierdo y derecho)
Tipos de áreas:
● Áreas de bloque
○ Definen elementos de bloque de pequeño tamaño (normalmente asociadas a líneas)
■ párrafos,
■ listas
■ tablas
○ Pueden contener otras áreas de bloque o áreas de línea
● Áreas de línea
○ Definen líneas de texto dentro de áreas de bloque.
○ Contienen áreas secuenciales
Tipos de áreas:
● Áreas secuenciales
○ Definen texto en el interior de líneas.
■ caracteres simples
■ viñetas
■ gráficos,….
Estructura de una página XSL-FO
● El elemento raíz es <fo:root>
● Descendientes directos del raíz son:
○ <fo:layout-master-set> Conjunto de patrones de las páginas de un documento
<fo:simple-page-master>
Contenido por <fo:layout-master-set>, define el patrón para una página
(regiones, márgenes, cabecera, pie,...)
<?xml version="1.0" encoding="UTF-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="paginaEjemplo">
<fo:region-body margin="1in"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="paginaEjemplo">
<fo:flow flow-name="xsl-region-body">
<fo:block>¡Hola Mundo!</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
XSL-FO y XSLT
● Queremos generar una salida en formato PDF a partir de los datos de un documento XML.
● Usamos una combinación de etiquetas de XSL-FO con las de XSLT
● Construimos una hoja de transformaciones XSLT con objetos de formateo XSL-FO
Código combinado XSL-FO y XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format" >
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="paginaEjemplo">
<fo:region-body margin="1in"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="paginaEjemplo">
<fo:flow flow-name="xsl-region-body">
<fo:block><xsl:value-of select="mensaje"/></fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
</xsl:stylesheet>
Documento XML
<?xml version="1.0" encoding="UTF-8"?><mensaje>Hola mundo</mensaje>
Objetos de formateo<fo:root>
Elemento raíz de un documento XSL-FO
Atributo obligatorio
xmlns:fo="http://www.w3.org/1999/XSL/Format"Espacio de nombres de los objetos de formateo fo
<fo:layout-master-set>
Objeto que contiene todos los modelos de página (<fo:simple-page-master>) usados en el documento
<fo:simple-page-master>
● Define el formato o distribución (layout) de una página o conjunto de páginas
● Hay uno de estos objetos por cada formato de página diferente que haya en el documento.
○ Documentos sencillos: un único modelo de página
○ Documentos complejos: varios modelos (portada, índice, páginas pares, páginas
impares,...)
● Puede contener cinco regiones o secciones:
○ cuerpo (region-body). Imprescindible
○ cabecera y pie (region-before y region-after)
○ margen izquierdo y derecho (region-start y region-end)
Objetos de formateo<fo:simple-page-master>
Atributo
master-name
Nombre del modelo
Dispone de otros atributos similares a los existentes en CSS:
margin, page-height, page-width, space-before, space-after, start-indent
Objetos de formateo para el contenido de las páginas
<fo:page-sequence>
● Se define un objeto de este tipo por cada página diferente que se quiera generar en el
documento de salida.
● Los descendientes proporcionan el contenido de la página de salida.
● Cada objeto de este tipo está asociado a un objeto <fo:page-sequence-master> o <fo:simple-
page-master>
● Contenido: <fo:title>, <fo:static-content>, <fo:flow>
● Atributos
○ master-reference: nombre del objeto <fo:page-sequence-master> o <fo:simple-page-
master> al que se encuentra asociado.
●
<fo:page-sequence-master>
● Indica en qué orden se emplean los objetos <fo:simple-page-master>
Atributo
master-namenombre el modelo
<fo:single-page-master-reference>
Hace alusión a un <fo:simple-page-master> que se insertará una única vez
Atributosmaster-reference
nombre del <fo:simple-page-master>
<fo:repeatable-page-master-alternatives>
Indica la repetición de un conjunto de objetos <fo:simple-page-master>Contiene uno o más elementos <fo:conditional-page-master-reference>
Atributosmaximum-repeats (Opcional)
Indica el número de repeticiones máximo que se pueden dar.
<fo:repeatable-page-master-reference>
Hace alusión a un <fo:simple-page-master> que se insertará repetidas veces
Atributosmaster-reference
nombre del <fo:simple-page-master>
<fo:conditional-page-master-reference>
Modelo de página condicional y condiciones que se tienen que dar para que se aplique
Cuando varios modelos cumplen la misma condición (ser primera página e impar) se aplica el
primero en aparecer.
Atributosmaster-reference: nombre de la <fo:simple-page-master>page-position: ordinal de la página a la que se aplicará el modelo (first,...)odd-or-even: indica si el modelo se aplica a páginas pares (even) o impares (odd)
Objetos de formateo para el contenido de las páginas
<fo:title>
Objeto que especifica el título para una <fo:page-sequence>
Objetos de formateo para el contenido de las páginas
<fo:static-content>
Contiene elementos estáticos, como cabeceras o pies de página, que se repetirán en muchas
páginas.
Estos contenidos estáticos aparecerán en una página antes que el objeto <fo:flow>
Atributos
flow-name: indica dónde se ubicará el contenido <fo:static-content> (xsl-region-body,
xsl-region-before, xsl-region-after, xsl-region-start, xsl-region-end, xsl-before-float-
separator y xsl-footnote-separator)
Objetos de formateo para el contenido de las páginas
<fo:flow>
Contiene los elementos que se imprimirán en una página.
Atributos
flow-name: indica dónde se ubicarán los elementos <fo:static-content> (xsl-region-body,
xsl-region-before, xsl-region-after, xsl-region-start, xsl-region-end, xsl-before-float-
separator y xsl-footnote-separator)
Objetos de formateo para el contenido de las páginas
<fo:block>
Contenedor a nivel de bloque (similar a un <div> en HTML)
Para dar formato a párrafos, títulos,...
Atributos
Similares a las de estilos CSS: background-color, font-family, font-weight, margin,
padding,...
Objetos de formateo para el contenido de las páginas
<fo:inline>
Contenedor a nivel de objetos distribuidos secuencialmente, sin salto de línea.
Objetos de formateo para generar listas
<fo:list-block>
Objeto usado para definir una lista.
Contenido: <fo:list-item>
<fo:list-item>
Objeto usado para definir cada elementoo de una lista.
Contenido: <fo:list-item-label> <fo:list-item-body>
Objetos de formateo para generar listas
<fo:list-item-label>
Objeto que contiene la etiqueta usada como marcador de lista (un numero, guion,...)
Esta etiqueta se encuadrara dentro de un objeto <fo:block>
Contenido: <fo:block> <fo:block-container> <fo:table-and-caption> <fo-table> <fo:list-block>
<fo:list-item>
Objetos de formateo para generar listas
<fo:list-item-body>
Objeto que contiene el cuerpo o contenido de cada elemento de lista. Normalmente uno o mas
objetos <fo:block>)
Contenido: <fo:block> <fo:block-container> <fo:table-and-caption> <fo-table> <fo:list-block>
<fo:list-item>
Objetos de formateo para generar tablas
<fo:table-and-caption> ¡No usar con Oxygen!
Objeto que contiene todos los demas relativos a la construccion de tablas
<fo:table-caption> ¡No usar con Oxygen!
Contiene el titulo de la tabla y es descendiente de <fo:table-and-caption>
Objetos de formateo para generar tablas
<fo:table>
Define la tabla
Contenido: <fo:table-column> <fo:table-header> <fo:table-body> <fo-table-footer>
<fo:table-column>
Permite indicar el formato de las columnas de la tabla.
Atributo
column-width: ancho de la columna
Objetos de formateo para generar tablas
<fo:table-header>
Define la cabecera de la tabla
Contenido: <fo:table-row> <fo:table-cell>
<fo:table-footer>
Define el pie de la tabla.
Contenido: <fo:table-row> <fo:table-cell>
Objetos de formateo para generar tablas
<fo:table-body>
Objeto contenedor de las filas <fo:table-row> y celdas <fo:table-cell> de la tabla (similar a
HTML)
<fo:table-row>
Define una fila de una tabla.
Contenido: <fo:table-cell>
Objetos de formateo para generar tablas
<fo:table-cell>
Representa una celda de una tabla
Contenido: <fo:block> <fo:block-container> <fo:table-and-caption> <fo:table> <fo:list-block>
Objetos de formateo para generar enlaces e imagenes
<fo:basic-link>
Corresponde a un enlace, puede ser a una ubicacion interna al documento (etiquetada con id)
o externa (URL)
Atributos:
internal-destination: atributo id del objeto del documentos a donde conduce el enlace
external-destination: URI del enlace
Objetos de formateo para generar enlaces e imagenes
<fo:external-graphic>
Permite insertar una imagen.
Atributos:
src, width, height
<fo:leader>
Permite crear una linea horizontal
Atributos:
leader-length: longitud de la linea
leader-pattern: aspecto de la linea