|
Hace ya unos años me introduje en el apasionante mundo del XML, gracias a un artículo de Jaime E. Villate, donde se describía cómo editar documentos en Xml para su publicación automática en la web. Poco a poco, empezó a apasionarme esta tecnología emergente, hasta tal punto, que hoy soy incapaz de hacer la mitad de cosas que hago sin ayuda de Xml en alguno de sus dialectos.
Dado que cada vez más gente me pregunta cómo instalar xml en Linux, y también, porque yo mismo lo necesito para realizar instalaciones, he decidido recoger en este documento todas las herramientas con las que trabajo a diario, y elaborar así una pequeña guía de instalación.
En principio, las herramientas se podrán instalar sobre cualquier linux independientemente de la distribución que se use, pero para ello, será necesario tener instalado stow, dado que algunas de ellas serán compiladas en local, y esta herramienta es excelente para gestionar los programas que hayamos compilado a mano en nuestro sistema.
Para ello necesitaremos los siguientes paquetes:
Xerces 2.1 C++: Parser DTD y XML-Schema desarrollado dentro del proyecto xml.apache.org , e implementado en C++, que es más rápida que su versión Java.
Xalan 1.4 C++: Motor XSLT desarrollado dentro del proyecto xml.apache.org, e implementado en C++, que es más rápida que su versión Java.
ICU 2.2: Librería de internacionalización de Charsets, desarrollada por IBM. La requieren Xerces y Xalan, para usar las características avanzadas de los mismos.
Dado que debemos recompilar necesitaremos tener instalado:
GNU make.
GNU autoconf.
GNU gcc y g++.
Stow: Pequeña utilidad para la gestión de aplicaciones compiladas e instaladas de manera local.
Para instalar los paquetes de xml-apache.org teclee:
su - mkdir -p /opt/xml.apache.org cd /opt/xml.apache.org wget http://ignacio-barrancos.dnsalias.net/software/linux/xml/xml-apache.org/* make
Cuando finalice el comando make, tendrá instalado en /usr/local/stow los directorios: icu, xalan y xerces, que contendrán los binarios y librerías que se usarán, además de los enlaces simbólicos dentro de sus respectivos /usr/local.
Además de estos paquetes también se deben instalar aplicaciones basadas en XML, para propósitos específicos.
Cada vez más aparecen aplicaciones escritas en java que interactúan con Xml. Es por esto que se convierte en una herramienta imprescindible. Es muy conveniente instalar la versión 1.4, dado que las últimas versiones de Fop, presentan incompatibilidades con versiones anteriores. Tampoco es recomendable instalar el Java open source que hay para Debian. Para instalar el jdk, teclearemos...
su - cd /opt wget http://ignacio-barrancos.dnsalias.net/software/linux/j2sdk-1.4.2.tar.gz tar -xzvf j2sdk-1.4.2.tar.gz ln -s /opt/j2sdk-1.4.2.tar.gz /opt/java
Fop es el parser de XSLFO del proyecto Xml.apache.org.
XSLFO es un estándard del w3c, y fué diseñado para ser el lenguaje de hojas de estilo de los documentos XML. Básicamente, este estándard permite especificar cómo se renderizarán documentos XML, en papel, en html, etc, etc..., algo análogo a lo que hace LaTeX, pero con la diferencia que no presenta ciertos problemas de LaTeX, sobre todo al acercarse los finales de página.
Para instalar fop, se teclearán la siguiente secuencia de comandos:
su - cd /opt wget http://ignacio-barrancos.dnsalias.net/software/linux/xml/fop-0.20.5.tar.gz tar -xzvf fop-0.20.5.tar.gz ln -s /opt/fop-0.20.5/fop.sh /usr/local/bin/fop
Xinclude es parte del estandard Xlink del w3c, que modela cómo deben ser los enlaces a documentos XML desde documentos XML, valga la redundancia.
En concreto, Xinclude permite especificar links dentro de archivos XML que luego el motor XSLT, al procesarlos, sustituirá por el contenido del documento al que hace referencia. Por ejemplo,
Supongamos el archivo, prueba.xlink.xml con el siguiente contenido:
<?xml version="1.0"?> <a> <parrafo>Hola esto es una prueba</parrafo> <prueba xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xpointer="http://www.w3.org/TR/xptr"> <xi:include href="contenido.xml" parse="xml" /> </prueba> </a>
Supongamos que el archivo contenido.xml, contiene ...
<?xml version="1.0" ?> <otro>Este es el archivo contenido</otro>
El XML final, una vez se hayan resulto y evaluado los xlinks, será:
<?xml version='1.0' encoding='UTF-8'?> <a> <parrafo>Hola esto es una prueba</parrafo> <prueba xmlns:xi='http://www.w3.org/2001/XInclude' xmlns:xpointer='http://www.w3.org/TR/xptr'> <otro xml:base='file:/tmp/contenido.xml'>Este es el archivo contenido</otro> </prueba> </a>
El problema, es que los motores actuales XSLT dejan mucho que desear. Para solucionar esta necesidad se debe instalar otro paquete llamado Xincluder, que se encarga de solucionar los problemas que Xalan, ni xslt saben solucionar. Para ello,
su - cd /opt wget http://ignacio-barrancos.dnsalias.net/software/linux/xml/xincluder.tar.gz tar -xzvf xincluder.tar.gz ln -s /opt/xincluder/xincluder.sh /usr/local/bin/xincluder
Se puede encontrar documentación ténica de Oracle sobre XML en los siguientes links del Metalink:
SET SERVEROUTPUT on DECLARE ctx DBMS_XMLQuery.ctxType; xml clob; emp_no NUMBER := 7844; xmlc varchar2(255); off integer := 1; len integer := 255; BEGIN ctx := DBMS_XMLQuery.newContext('SELECT * FROM emp WHERE empno = :empno'); DBMS_XMLQuery.setBindValue(Ctx, 'empno', emp_no); xml := DBMS_XMLQuery.getXML(Ctx); DBMS_XMLQuery.closeContext(Ctx); DBMS_LOB.READ(xml, len, off, xmlc); DBMS_OUTPUT.PUT_LINE(xmlc); END; /
>ignacio-barrancos.dnsalias.net mailto: ignacio@adesx.com
|