Está usted en Indice > Construcción > Lenguajes > XML > Manual de XML > Creación de una hoja de estilos XSL que transformará el documento XML en un fichero XSL-FO
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

MANUAL DE XML

CREACION DE UNA HOJA DE ESTILOS XSL QUE TRANSFORMARA EL DOCUMENTO XML EN UN FICHERO XSL-FO

Con el fin de que la informacion que se genere en el documento XSL-FO de salida pueda ser dinamica, haremos que los datos se almacenen en un documento XML, transformandose en el documento de salida mediante el uso de una hoja de estilos XSL.

<?xml version="1.0" encoding="ISO-8859-1"?>
<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 encoding="ISO-8859-1" indent="yes"/>

  <xsl:template match="listado">
    <fo:root xmlns:fo=" http://www.w3.org/1999/XSL/Format ">
      <fo:layout-master-set>
        <fo:simple-page-master margin-right="1cm" margin-left="1cm" margin-bottom="1cm"
                               margin-top="1cm" page-width="210mm" page-height="297mm" master-name="first">
          <fo:region-before extent="1cm"/>
          <fo:region-body margin-top="1cm" margin-bottom="1cm"/>
          <fo:region-after extent="1cm"/>
        </fo:simple-page-master>
      </fo:layout-master-set>

      <fo:page-sequence master-reference="first">
        <fo:flow flow-name="xsl-region-body">
          <fo:block>
     <xsl:value-of select="cabecera" />
          </fo:block>

   <fo:list-block space-before="0.5cm" space-after="0.5cm" font-size="12pt">
     <xsl:apply-templates select="articulos/articulo" />
          </fo:list-block>
        </fo:flow>
      </fo:page-sequence>
    </fo:root>
  </xsl:template>

  <xsl:template match="articulo">
    <fo:list-item>
      <fo:list-item-label end-indent="label-end()">
        <fo:block text-align="start">
          <xsl:text>&#x2022;</xsl:text>
        </fo:block>
      </fo:list-item-label>
      <fo:list-item-body start-indent="body-start()">
        <fo:block>
          <xsl:value-of select="text()"/>
        </fo:block>
      </fo:list-item-body>
    </fo:list-item>
  </xsl:template>
</xsl:stylesheet>

Ejecutar la transformación con un parser XSL
Si vamos a utilizar un procesador en linea de comandos como puede ser el XSLTPROC, la instrucción a ejecutar seria la siguiente:

xsltproc sample.xsl sample.xml > sample.fo

Si vamos a utilizar Apache ANT. El fichero "build.xml" seria el siguiente:

<?xml version="1.0"?>
<project name="procesando-xml" default="fo">
  <target name="init" />

  <target name="fo" depends="init">
    <echo message="Generando sample.fo ..." />
    <xslt in="sample.xml" out="sample.fo" style="sample.xsl">
      <outputproperty name="method" value="xml"/>
      <outputproperty name="standalone" value="yes"/>
      <outputproperty name="encoding" value="ISO-8859-1"/>
      <outputproperty name="indent" value="yes"/>
    </xslt>
  </target>
</project>

La ejecucion de esta definicion nos permite tomar un fichero "sample.xml" como entrada, aplicarle una hoja de estilos xsl "sample.xsl" y obtener como salida un fichero "sample.fo" con el codigo FO correspondiente.

Procesamiento de dicho fichero XSL-FO con Apache FOP
Para obtener finalmente el fichero PDF que queremos como resultado, podemos ejecutar el siguiente script que viene con la distribucion de Apache FOP:

/opt/fop-0.20.5rc2/fop.sh sample.fo -pdf sample.pdf

 




Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 06-07-2008 a las 00:38:16