XSLT-FO Objetos de formateo XSLT
Objetos de formateo Todas 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"
Documento XML
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 </fo:flow> </fo:page-sequence> </fo:root> </xsl:template> </xsl:stylesheet>
select="mensaje"/></fo:block>
<?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:simplepage-master>
●
Contenido: <fo:title>, <fo:static-content>, <fo:flow>
●
Atributos ○
master-reference: nombre del objeto <fo:page-sequence-master> o <fo:simple-pagemaster> al que se encuentra asociado.
●
<fo:page-sequence-master> â&#x2014;?
Indica en quĂŠ orden se emplean los objetos <fo:simple-page-master> Atributo master-name nombre el modelo
<fo:single-page-master-reference> Hace alusiĂłn a un <fo:simple-page-master> que se insertarĂĄ una Ăşnica vez Atributos master-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> Atributos maximum-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 Atributos master-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. Atributos master-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-floatseparator 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,
separator y xsl-footnote-separator)
xsl-region-start,
xsl-region-end,
xsl-before-float-
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