21
Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA · www.captiva.es eXtensible Stylesheet Language Formatting Objects

XML

  • Upload
    vahe

  • View
    49

  • Download
    0

Embed Size (px)

DESCRIPTION

XML. eXtensible Stylesheet Language Formatting Objects. Introducción. XSL Formatting Objects Aplicación desarrollada enteramente en XML. Permite describir de forma precisa la posición del texto en una página  Orientado a impresión . - PowerPoint PPT Presentation

Citation preview

Page 1: XML

Curso: XML, de los datos a la presentaciónJulio de 2005

CAPTIVA · www.captiva.es

eXtensible Stylesheet Language Formatting Objects

Page 2: XML

Introducción XSL Formatting Objects

Aplicación desarrollada enteramente en XML.

Permite describir de forma precisa la posición del texto en

una página Orientado a impresión.

Define elementos que representan: páginas, bloques de

texto dentro de las páginas, gráficos, reglas horizontales,

etc.

Normalmente no se escribe XSLFO directamente sino

que se escriben hojas de estilo XSLT que transforman un

documento nativo XML en XSLFO.

Page 3: XML

Introducción (II) XSL Formatting Objects

Finalmente la aplicación de renderizado lee XSLFO y la

presenta al usuario.

Debido a que la mayoría de los navegadores no

soporta renderizar directamente XSLFO, es necesario

un procesamiento de transformación adicional: XSLFO a PDF.

XSLFO a TEX.

Page 4: XML

Introducción (III)

XMLXML

XSLXSL

Procesador XSLT

Procesador XSLT

TEXTEX

XSLFOXSLFO ProcesadorXSLFO

ProcesadorXSLFO

Page 5: XML

Documento XSLFO

Un documento XSL-FO es un documento XML

con información de salida, que contiene tanto

información de composición de la salida como

información de contenido.

Un documento XSL-FO se puede almacenar

con extensión .fo, .fob o incluso también .xml,

para facilitar su acceso a los editores XML.

Page 6: XML

Estructura documento XSLFO

Elemento raíz: fo:root <?xml version="1.0" encoding="ISO-8859-1"?>

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"></fo:root>

Plantillas de páginas: fo:layout-master-set Contiene uno o más elementos con la configuración de las

diferentes plantillas de páginas. Incluye información de tamaño de página, posición, márgenes, etc.

Contenido de las páginas: fo:page-sequence Uno o más elementos con información de contenido e

instrucciones de formato. Cada elemento referencia a una plantilla definida anteriormente en

el elemento fo:layout-master-set.

Page 7: XML

Ejemplo documento XSLFO: <?xml version="1.0" encoding="ISO-8859-1"?>

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name=“miPagina"> <!– Plantilla de la página --> </fo:simple-page-master> </fo:layout-master-set>

<fo:page-sequence master-reference=“miPagina"> <!– Contenido de la página --> </fo:page-sequence>

</fo:root>

Estructura documento XSLFO (II)

Plantillas de páginas

Contenido de páginas

Page 8: XML

Plantillas de páginas

XSLFO define únicamente un tipo de plantilla: Elemento fo:simple-page-master Representa una página rectangular estándar con

márgenes en los cuatro lados. Tiene un único nombre (atributo: master-name). Atributos que definen el tamaño de la página y de los

márgenes: <fo:simple-page-master master-name=“miPagina"

page-height="21cm" page-width="29.5cm" margin-top="1cm" margin-bottom="1cm" margin-left="2cm" margin-right="2cm">

<!–- Regiones separadas de la página --> </fo:simple-page-master>

<fo:layout-master-set />

Page 9: XML

La plantilla define 5 regiones dentro de

una página: region-start, region-end, region-

before, region-after y region-body.

Su disposición en la página depende del

sistema de escritura, que puede ser

occidental, hebreo, chino y otras posibles

combinaciones.

Plantillas de páginas (II)<fo:simple-page-master />

Page 10: XML

<fo:region-start/>

<fo:region-end/>

<fo:region-before/>

<fo:region-after/>

<fo:region-body/>

Sistema de escritura occidental: de izquierda a derecha y de arriba a abajo

Page 11: XML

fo:region-body obligatorio, el resto opcionales.

Por defecto una página únicamente contiene la región body. En caso de especificar regiones de tipo start, end, before o after

es necesario indicar su correspondiente anchura o altura mediante el atributo “extent” y especificar los márgenes de la region body “margin-top”, “margin-left”, etc para que no se solapen.

Plantillas de páginas (III)<fo:simple-page-master />

<fo:simple-page-master master-name=“miPagina" page-height="21cm" page-width="29.5cm" margin-top="1cm" margin-bottom="1cm“ margin-left="2cm“ margin-right="2cm">  <fo:region-before extent="2.5cm" />  <fo:region-body margin-top="3cm" margin-bottom="2cm" />   <fo:region-after extent="1cm" /> </fo:simple-page-master>

Page 12: XML

Flujo de contenido

Cada elemento fo:page-sequence indica mediante el atributo “master-reference” la plantilla de página que se va a utilizar en la composición del documento.

Habrá tantos elementos fo:page-sequence como secuencias de páginas con diferentes plantillas de página.

Dentro de un elemento fo:page-sequence la información de contenido y de composición fluye a través de elementos fo:flow.

<fo:page-sequence />

<fo:page-sequence master-reference=“miPagina"> <!-- Contenido --></fo:page-sequence>

Page 13: XML

Flujo de contenido

Cada elemento fo:flow dentro de una secuencia de páginas indica mediante el atributo “flow-name” la region dentro de la página donde incluir el contenido.

El contenido de las páginas se organiza en forma de bloques mediante elementos fo:block anidados dentro de elementos fo:flow.

El SW de formateo va rellenando páginas con la información de contenido de los elementos contenidos dentro del elemento fo:flow. Cuando una página se completa se utiliza una y otra vez la misma plantilla hasta que todo el texto queda impreso.

<fo:flow />

Page 14: XML

Contiene elementos de formateo a nivel de bloque. fo:block elemento básico. Otros: fo:block-container, fo:list-block

(listas), fo:table, fo:table-and-caption (tablas), etc.

fo:block puede contener texto o elementos de formateo de objetos: fo:external-graphic, fo:inline, fo:page-number, fo:footnote e incluso nuevos elementos fo:block.

Flujo de contenido<fo:flow />

Page 15: XML

Bloques XSLFO XSLFO define una serie de áreas rectangulares o

cajas (boxes). Áreas de tipo bloque, línea, áreas dentro de línea, etc. Las áreas de tipo bloque o dentro de línea se definen

mediante elementos XSLFO, mientras que las de tipo línea son generadas por el formateador según son necesarias.

El motor de renderización normalmente decide automáticamente el lugar y tamaño de las diferentes áreas que componen el documento.

Sin embargo siempre se pueden definir propiedades de posición tanto relativa como absoluta, de tamaño, de separación, etc. dentro de una página.

Por defecto las áreas no se solapan, aunque se puede forzar para que ocurra.

Page 16: XML

Por cada caja o área se distinguen una serie de zonas:

Contenido

Margen

Borde

Relleno

Contenido

Bloques XSLFO (II)

Page 17: XML

A partir de aquí XSLFO se convierte en un lenguaje de descripción y composición de salida al igual que lo puede ser HTML, LATEX, etc.

Con gran variedad de elementos (tablas, listas, símbolos, etc.) y atributos (márgenes, estilos, colores, etc.)

Bloques XSLFO (III)

Page 18: XML

Existen multitud de propiedades de formateo con la misma sintaxis que en CSS Las propiedades se pueden aplicar a los bloques o cualquier elemento Son heredadas en elementos descendientes Ejemplo de clase CSS:

dish { display: block; font-family: Helvetica, Arial, sans-serif; font-size: 20pt; font-weight: bold; text-align: center}

Equivalente aplicado a un bloque renderizado desde template XSLT:<xsl:template match="dish"> <fo:block font-family="Helvetica, Arial, sans-serif" font-size="20pt" font-weight="bold" text-align="center"> <xsl:apply-templates/> </fo:block></xsl:template>

Propiedades

Page 19: XML

En algunas ocasiones las propiedades de CSS se traducen en elementos FO

El ejemplo son las listas. Los elementos necesarios para formar una lista son:

<fo:list-block> <fo:list-item> <!– Carácter unicode para el ● --> <fo:list-item-label>&#x2022;</fo:list-item-label> <fo:list-item-body>Primer elemento</fo:list-item-

body> </fo:list-item> <fo:list-item> <fo:list-item-label>&#x2022;</fo:list-item-label> <fo:list-item-body>Segundo elemento</fo:list-item-

body> </fo:list-item></fo:list-block>

Propiedades (II)

Page 20: XML

Un procesador XSLFO es un programa que formatea documentos XSLFO generando una salida.

La mayoría de los procesadores XSLFO permiten transformar a formatos PDF y formatos de calidad de impresión así como otros tipos de formatos, incluso HTML.

También existen IDEs que permiten diseñar composiciones de salida de manera gráfica generando los elementos XSLFO automáticamente.

XSL Formatter, Scriptura, XMLSpy, Stylus Studio, etc.

Procesadores XSLFO

Page 21: XML

Partiremos de ejemploFO.xsl y lo modificaremos para que sólo nos saque con formato “principal” el primer capítulo y el resto con formato “apaisada2columnas”

Adecentaremos primero el código definiendo dos variables globales “fragmentoEncabezado” y “fragmentoPie” que contengan respectivamente los elementos

<fo:static-content flow-name="xsl-region-before"> <fo:static-content flow-name="xsl-region-after">

Igualmente crearemos un template para “parrafo” extrayendo su contenido fuera

Para indicar a qué tipo de página asociamos cada page-sequence dentro del template del capítulo usaremos una variable local “tipoPaginaCuerpo”

Ejercicio