Java es una de las opciones más interesantes para el desarrollo de aplicaciones con XML.
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
Como ya hemos podido suponer, el empleo de tecnología XML, al ser un estándar
internacional y público, no nos ata a una plataforma o sistema de desarrollo concreto. Lo
mismo se puede usar Perl bajo UNIX para generar documentos XML a partir de una base
de datos, como usar Python en Windows NT para servir documentos HTML4 a
navegadores web a partir de un documento XML.
Dicho esto, hay que decir que JAVA se posiciona como una opción interesante a la hora
de desarrollar aplicaciones usando XML.
Por ejemplo, a partir de fuentes de datos en XML, podemos escribir un servlet que analice
sintácticamente el XML, y que genere un árbol DOM (Document Object Model). Una vez
generado el árbol DOM, podemos ir extrayendo la información que contiene e ir generando
un documento HTML de acuerdo con ciertas reglas de formato, de modo que pueda ser
visualizado por un navegador web.
Vamos a suponer que nuestro servlet carga ese fichero XML en un objeto string de Java,
que nos vamos a disponer a analizar.
Lo primero que debemos hacer es crear un analizador sintáctico XML. Usamos el objeto
com.ibm.xml.Parser para ello.
Parser parser = new Parser("xslparse.err");
El fichero "xslparse.err" será el registro de cualquier error que ocurra mientras procesamos
el documento XML, que debe ser convertido a un InputStream.
ByteArrayInputStream bais = new ByteArrayInputStream(xmlString.getBytes());
Ahora le decimos al parser que ignore las declaraciones de tipo de documento, los
comentarios, etc.
parser.setWarningNoXMLDecl(false);
parser.setWarningNoDoctypeDecl(false);
parser.setKeepComment(false);
parser.setProcessNamespace(false);
Analizamos el documento, y cerramos el InputStream.
doc = parser.readStream;
bais.close();
Ahora contenemos el árbol DOM en el objeto "doc", y lo que tenemos que hacer es
movernos por el árbol DOM e ir sacando los datos que contiene.
Vamos a ver los métodos que tenemos para navegar el DOM (definidos en
org.w3c.dom.Node)
getDocumentElement()
Devuelve el elemento raiz
getFirstChild()
Devuelve el nodo que es el primer "hijo" de este nodo.
getNextSibling()
Devuelve el nodo que es el siguiente "hermano" de este nodo.
getLastChild()
Devuelve el nodo que es el último "hijo" de este nodo.
getPreviousSibling()
Devuelve el nodo que es el último "hermano" de este nodo.
getAttribute(java.lang.String attrName)
Devuelve un objeto string que representa el valor de un atributo.
Existen más métodos para manipular el DOM. La especificación "DOM Level
1" (http://www.w3.org/TR/REC-DOM-Level-1) aporta más información sobre métodos del
DOM.
LENGUAJE DE ENLACE XML (XLINK)
XLink es una aplicación XML que intenta superar las limitaciones que tienen los enlaces de
hipertexto en HTML. Es una especificación que todavía está en desarrollo, y que todavía
no tiene "rodaje" en el mundo real.
Los enlaces en HTML tienen una serie de limitaciones, que los hacen bastante pobres. Porejemplo, sólo tienen dos extremos, la terminación origen y la destino, y son
unidireccionales.
Si yo creo un enlace en mi página web personal que me lleve hasta la página principal de
Coca-Cola, estoy creando un "vínculo" entre esta página y la mia.
<a href="http://www.coca-cola.com/">Coca-Cola</a>
Este vínculo es unidireccional, porque un visitante cualquiera que entre en la página de
Coca-Cola, no tiene forma de saber que mi página (así como otros cientos de miles)
enlaza con ella.
El objetivo de XLink es crear enlaces entre recursos, de una forma de la que HTML no es
capaz.
Por ejemplo, un estudiante podría hacer anotaciones a los apuntes que un profesor tiene
disponibles en la red, por el método de insertar un enlace desde los apuntes (a los que no
tiene acceso de escritura o modificación) y su propia página de anotaciones y
comentarios.
O bien, podremos vincular dos páginas cualquiera, por ejemplo enlazando el texto de una
noticia en un diario on-line, con el texto de la noticia equivalente en el diario competidor.
Y no hay porqué quedarse en enlaces con dos extremos. Los enlaces extendidos permiten
mucho más que eso.
En el momento actual, la tecnología para poder mantener una base de datos de enlaces
mundial, no está desarrollada, pero se puede hacer a nivel local.
Por ejemplo, nuestra empresa quiere comprar ciertos productos de un suministrador. Los
trabajadores de la empresa podrán visitar la página web del proveedor y hacer enlaces
externos a comentarios sobre las especificaciones de tal producto. Cuando otro
compañero de la empresa visite la página, el servidor de enlaces de nuestra empresa le
mostrará la página junto con los enlaces externos creados, y mostrar nuestros
comentarios como si fueran parte del documento original.