XSL-FO

34
XSLT-FO Objetos de formateo XSLT

description

Objetos de formateo XSLT

Transcript of XSL-FO

Page 1: XSL-FO

XSLT-FOObjetos de formateo XSLT

Page 2: XSL-FO

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.

Page 3: XSL-FO

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)

Page 4: XSL-FO

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

Page 5: XSL-FO

Tipos de áreas:

● Áreas secuenciales

○ Definen texto en el interior de líneas.

■ caracteres simples

■ viñetas

■ gráficos,….

Page 6: XSL-FO

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,...)

Page 7: XSL-FO

<?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>

Page 8: XSL-FO

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

Page 9: 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>

Page 10: XSL-FO

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

Page 11: XSL-FO

<fo:layout-master-set>

Objeto que contiene todos los modelos de página (<fo:simple-page-master>) usados en el documento

Page 12: XSL-FO

<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)

Page 13: XSL-FO

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

Page 14: XSL-FO

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.

Page 15: XSL-FO

<fo:page-sequence-master>

● Indica en qué orden se emplean los objetos <fo:simple-page-master>

Atributo

master-namenombre el modelo

Page 16: XSL-FO

<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>

Page 17: XSL-FO

<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.

Page 18: XSL-FO

<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>

Page 19: XSL-FO

<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)

Page 20: XSL-FO

Objetos de formateo para el contenido de las páginas

<fo:title>

Objeto que especifica el título para una <fo:page-sequence>

Page 21: XSL-FO

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)

Page 22: XSL-FO

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)

Page 23: XSL-FO

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,...

Page 24: XSL-FO

Objetos de formateo para el contenido de las páginas

<fo:inline>

Contenedor a nivel de objetos distribuidos secuencialmente, sin salto de línea.

Page 25: XSL-FO

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>

Page 26: XSL-FO

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>

Page 27: XSL-FO

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>

Page 28: XSL-FO

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>

Page 29: XSL-FO

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

Page 30: XSL-FO

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>

Page 31: XSL-FO

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>

Page 32: XSL-FO

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>

Page 33: XSL-FO

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

Page 34: XSL-FO

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