XSL, XSL:FO y FOP
Cuando trabajamos con XML, una de las técnicas más utilies es la
utilización de XSL para generar distintas salidas (HTML, WML, etc)
En numerosas ocasiones, la salida que debemos generar es un documento más
complejo (PDF,Word, etc.. ) para ello, se extendió XSL incluyendo
caracteristicas para definir la representación gráfica de los elementos. Esta
extensión se denomina XSL:FO, Formating Object.
Con XSL:FO podemos definir como un elemento se debe transformar ….. con
FOP, podemos de un modo sencillo formatear salidas en los formatos de ficheros
más comunes.
Nos descargamos FOP
Y lo descomprimimos …..
Para asegurarnos que tenemos todas las piezas… vamos a crear nuestro primer
documento XSL:FO y generar un PDF
<?xml version=»1.0″ encoding=»ISO-8859-1″?> <root xmlns=»http://www.w3.org/1999/XSL/Format» font-size=»12pt»> <layout-master-set> <simple-page-master margin-right=»25mm» margin-left=»15mm» margin-bottom=»25mm» margin-top=»15mm» page-width=»210mm» page-height=»297mm» master-name=»PAGINA«> <region-body region-name=»CUERPO» margin-bottom=»15mm» margin-top=»15mm» /> </simple-page-master> </layout-master-set> <page-sequence |
Desde la linea de comando invocamos al FOP y decimos que a partir de esta
información nos genere un PDF
Pues ya está
Podemos encontrar numerosos tutoriales en internet donde nos cuentan que
etiquetas debemos utilizar para crear nuevas secciones, tablas, etc
Pero como podeis comprender …. esto es como escribirse un fichero RTF o
Word en un Notepad. Vamos, que casi nos deberiamos buscar una herramienta que
escriba estos documentos por nosostros ( o por lo menos lo más gordo) y
nosostros restringirnos a cambiar aquello que nos sea necesario sobre una
estructura que esta construida ……
Nos vamos a marchar a souceforge a buscar las herramientas gratuitas que
podrían hacer esto por nosotros …..
HTMLTOFO
Un modo sencillo de construir plantillas FO, es crear una página html y
utilizar otro programa gratuito de sourceforge, html2fo
Sobre la página HTML
<html>
<head> <meta http-equiv= «Content-Language»content=«es»> <meta http-equiv= «Content-Type»content=«text/html; «> <meta name= «GENERATOR»content=«Microsoft FrontPage 4.0»> <meta name= «ProgId»content=«FrontPage.Editor.Document»> <title> Página ejemplo de HTML2FO</title></head> <body> <p><b> Bienvenidos a HTML2FO</b></p><p> Con esta herramienta, de un modosencillo e intuitivo podremos onvertir páginas HTML en plantillas FO. </p><p> Y como muestra un botón, o mejor unaimagen</p> <p><img border= «0»src=«file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/FrontPageTempDir/wpe1.jpg»></p> <p> </p></body> </html> |
Cuyo aspecto es
Ejecutamos el programa en linea de comando y obtenemos
<?xml version=»1.0″ encoding=»ISO-8859-1″ ?> <fo:root xmlns:fo=»http://www.w3.org/1999/XSL/Format» xmlns:fox=»http://xml.apache.org/fop/extensions»> <!– Creator=»html2fo» Version=»0.4.2″ –> <fo:layout-master-set> <fo:simple-page-master margin-right=»2.0cm» margin-left=»2.0cm» margin-bottom=»1.0cm» margin-top=»1.0cm» page-width=»21cm» page-height=»29.7cm» master-name=»first»> <fo:region-before extent=»1.5cm»/> <fo:region-body margin-bottom=»1.5cm» margin-top=»1.5cm»/> <fo:region-after extent=»1.0cm»/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference=»first» language=»en» hyphenate=»true»> <fo:static-content flow-name=»xsl-region-before»> <fo:static-content flow-name=»xsl-region-after»> … the footer should be inserted here … </fo:block></fo:static-content> <fo:flow flow-name=»xsl-region-body»> <fo:block line-height=»12pt» font-weight=»bold» font-size=»10pt» space-before.optimum=»1.5pt» space-after.optimum=»1.5pt» <fo:block space-before.optimum=»1.5pt» space-after.optimum=»1.5pt» keep-together=»always» id=»LastPage» line-height=»1pt» font-size=»1pt»></fo:block></fo:flow> </fo:page-sequence></fo:root> |
Ahora, como hicimos al principio vamos a generar un PDF para ver el aspecto
El pdf generado es el siguiente:
FOA
Otra posibilidad es usa la herramienta FOA ….. Formanting Objects
Authoring Tool … que podemos obtener en sourceforge …
Esta herramienta nos permite sacar el verdadero valor al XSLT:FO, es decir,
combinar las nuevas etiquetas que definen como se deben pintar las los
componentes con las reglas de transformación para definir como extraer los
datos de ficheros XML
FOA posee un tutorial muy completo e intuitivo … aun así …. os
mostraremos en un futuro como usarlo
Hola el tuotial estabastante interesante y es muy bueno,pero me queda una duda que he estado buscando por la web y no le encuentro el modo, como puedo utilizar fop para transformar un xsl a .doc, alguna idea????? Saludos