Mi Web 

Soporte XML para GNU/Linux

Introducción

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.

Instalación de paquetes xml.apache.org

Para ello necesitaremos los siguientes paquetes:

Dado que debemos recompilar necesitaremos tener instalado:

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.

Otros paquetes específicos

Además de estos paquetes también se deben instalar aplicaciones basadas en XML, para propósitos específicos.

Java 1.4

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

Apache fop

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

Xincluder

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,

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

Generación de listados usando OracleXML y LaTeX

Referencias técnicas oficiales de Oracle

Se puede encontrar documentación ténica de Oracle sobre XML en los siguientes links del Metalink:

Código de ejemplo

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
Usuario Linux Registrado: 354313