1 / 21

XML

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 .

vahe
Download Presentation

XML

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XML eXtensible Stylesheet Language Formatting Objects

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

  3. 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. • …

  4. Introducción (III) XSL XML XSLFO ProcesadorXSLFO Procesador XSLT TEX

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

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

  7. Estructura documento XSLFO (II) • 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> Plantillas de páginas Contenido de páginas

  8. Plantillas de páginas <fo:layout-master-set /> • 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>

  9. Plantillas de páginas (II) <fo:simple-page-master /> • 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.

  10. Sistema de escritura occidental: de izquierda a derecha y de arriba a abajo <fo:region-start/> <fo:region-end/> <fo:region-before/> <fo:region-after/> <fo:region-body/>

  11. Plantillas de páginas (III) <fo:simple-page-master /> • 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. <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>

  12. Flujo de contenido <fo:page-sequence /> • 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 master-reference=“miPagina"> <!-- Contenido --></fo:page-sequence>

  13. Flujo de contenido <fo:flow /> • 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.

  14. Flujo de contenido <fo:flow /> • 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.

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

  16. Bloques XSLFO (II) • Por cada caja o área se distinguen una serie de zonas: Contenido Contenido Relleno Borde Margen

  17. Bloques XSLFO (III) • 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.)

  18. Propiedades • 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>

  19. Propiedades (II) • 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>

  20. Procesadores XSLFO • 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.

  21. Ejercicio • 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”

More Related