Java Ant para transformar XML mediante XSL Stylesheets

El uso de Ant es relativamente sencillo, si alguna vez a programado en C, Ant es considerado el Make de Java; através de diversas secciones se definen acciones que deben ser llevadas acabo las cuales pueden incluir dependencias, creaciones y/o eliminación de formatos.

Las estructuras disponibles en Ant son muy poderosas ya que permiten ejecución de tareas extensas através de comandos simples; el archivo principal de Ant que puede ser considerado medular es llamado build.xml, dentro de éste se describen las ejecuciones que deben ser llevadas acabo por Ant.

A continuación se describe el contenido de este archivo para transformar XML através de "XSL Stylesheets" a diversos formatos:


El siguiente archivo es utilizado con Ant para la generación de diversos 
documentos generados a partir de XML.

En el directorio donde coloque este archivo (build.xml), asegúrese 
de generar un directorio llamado lib que incluya: 
             
    * Todos los archivos JAR de Xalan/Xerces. 
         (xerces.jar, xalanImpl.jar y xml-apis.jar ) 
    * El archivo JAR de la distribución FOP. 
         (fop.jar incluido en el directorio build de la distribución )
    * Los archivos JAR dependientes de FOP incluidos en el directorio lib 
      de su distribución
         (avalon.jar y batik.jar)
         


<?xml version="1.0"?>

<project default="init" basedir=".">


 <!--  La sección anterior indica que se trata de un archivo XML 
          Se abre el elemento project el cual indica que la fuente de 
	  todo documento será el directorio actual.
     -->  

  <!-- ======================================================== -->
  <!-- IDENTIFICAR CLASSPATH                                    -->
  <!--     Se define la ubicación de los archivos que           -->
  <!--     que deben ser incluidos al compilar                  -->
  <!--     En este caso se apunta hacia un directorio que       -->
  <!--     que contiene los archivos JAR de Xalan,             -->
  <!--     Xerces y Fop                                        -->
  <!-- ======================================================== -->

  <path id="classpath">
    <fileset dir="./lib">
      <include name="*.jar"/>
    </fileset>
  </path>


  <!-- ========================================================= -->
  <!-- PROPIEDADES DE INICIALIZACION                             -->
  <!--    Esta primer tarea (target) llamado init es ejecutada   -->
  <!--    al arranque de Ant, esto es , con simplemente          -->
  <!--    ejecutar el comando ant se invocan sus                --> 
  <!--    acciones, que en este caso son simplemente de          -->
  <!--    imprimir un mensaje y realizar tareas de configuración -->
  <!-- ========================================================= -->


  <target name="init">
    <tstamp/>
    <property name="nombre" value="Transformacion de Documentos"/>

    <echo message="------------------- ${nombre}  ----------------"/>

    <property name="debug"          value="on"/>
    <property name="optimize"       value="off"/>
    <property name="deprecation"    value="off"/>
    <property name="build.compiler" value="modern"/>
    <property name="target.vm"      value="1.4"/>
  </target>


  <!-- ====================================================== -->
  <!-- TRANSFORMAR XML A HTML                                 -->
  <!--     Esta tarea (target) produce un documento HTML      -->
  <!--     a partir de los archivos indicados, sus parámetros -->
  <!--     no merecen mucha explicación, son lo               -->
  <!--     suficientemente descriptivos                       -->
  <!-- ====================================================== -->
  
  <target name="html" depends="init">

    <echo message="-------------- Transformando XML a HTML --------------"/>

     <xslt in="productos.xml" style="productos2HTML.xsl"
      out="productos.html" destdir="."/> 

   </target>


  <!-- ====================================================== -->
  <!-- TRANSFORMAR XML A WML                                  -->
  <!--      En esta tarea (target) se genera un archivo para  -->
  <!--      WML utilizado en aparatos inalámbricos, sus       -->
  <!--      parámetros son idénticos a los definidos          -->
  <!--      anteriormente para HTML	                      -->
  <!-- ====================================================== -->


  <target name="wml" depends="init">

    <echo message="-------------- Transformando XML a WML --------------"/>

     <xslt in="productos.xml" style="productos2WML.xsl"
      out="productos.wml" destdir="."/> 

   </target>

  <!-- =======================================================-->
  <!-- TRANSFORMAR XML A PDF                                  -->
  <!--    La primer sección de esta tarea (target) no dista   -->
  <!--    mucho de las anteriores, sin embargo este primer    -->
  <!--    paso solo genera un archivo FOP, dicho archivo debe -->
  <!--    ser pasado por la conversión FOP a PDF , esto se    -->
  <!--    realiza através de un taskdef el cual es           -->
  <!--    aplicado al directamente al archivo en cuestión     -->
  <!-- =======================================================-->

  <target name="pdf" depends="init">

    <echo message="-------------- Transformando XML a PDF --------------"/>

     <xslt in="productos.xml" style="productos2PDF.xsl"
      out="productos.fo" destdir="."/> 

    <taskdef name="fop" classname="org.apache.fop.tools.anttasks.Fop">
     <classpath refid="classpath"/>
    </taskdef>

     <fop fofile="productos.fo" outfile="./productos.pdf"/> 

   </target>


  <!-- ============================================================= -->
  <!-- TRANSFORMAR TODO                                              -->
  <!--   Esta tarea (target) automatiza la creación de los           -->
  <!--   pasos anteriores, agregando los valores de tareas (targets) -->
  <!--   al parámetro depends                                        -->
  <!-- ============================================================= -->
  <target name="todo" depends="html,wml,pdf">
  </target>


  <!-- ============================================================= -->
  <!--  LIMPIAR TODO                                                 -->
  <!--   Esta tarea (target) simplemente elimina todos los archivos  -->
  <!--   que pudieron ser creados mediante este archivo de Ant       -->
  <!-- ============================================================= -->


  <target name="limpiar" depends="init" >
    <delete file="productos.pdf"/>
    <delete file="productos.fo"/>
    <delete file="productos.wml"/>
    <delete file="productos.html"/>
  </target>


    <!-- Se cierra el elemento proyecto  -->  
  
</project>

Menú Curso

XML y sus Orígenes

Manipulación y Proceso de XML

DOM, SAX y JDOM

Namespaces, Schemas y DTD's

XSL: XSLT, XPath y TraX

XMLRPC y SOAP (Web Services)

Diseño con XMLRPC

Diseño con SOAP .

Apéndice "A" (Procesando XML con parsers).

Apéndice "B" (Validando XML con Schemas y DTD's).

Apéndice "C" (XSL: XPath y "XSL Stylesheets").

Apéndice "D" (XMLRPC: Diseño).

Apéndice "E" (SOAP, WSDL, UDDI y WSIL : Diseño).