 Tutoriales
Apuntes de XML
Otros temas de interés
XLink
JDOM
Otra API más
- Es otra API para manipular documentos XML, pero sólo
desde programas escritos en Java.
- Pretende ser una alternativa a la API DOM, con las
siguientes características principales:
- Más fácil de usar.
- Más adecuada a Java.
- Más rápida.
- Independiente de cualquier analizador (recordar
problemas con la creación y serialización de documentos).
- Que se integre bien con SAX y DOM.
- A continuación se muestra un ejemplo que extrae el
título y los capítulos del documento del libro, utilizando para
ello JDOM:
import java.io.File;
import java.util.List;
import org.jdom.input.DOMBuilder;
import org.jdom.*;
public class PeqEjemplo {
public static void main(String[] args) {
if (args.length != 1) {
System.out.println("Debe haber un parámetro (el fichero)");
}
else {
String fich = args[0];
System.out.println("Generando árbol para: " + fich + "\n");
try {
DOMBuilder b =
new DOMBuilder("org.jdom.adapters.XercesDOMAdapter");
Document doc = b.build(new File(fich));
Element raiz = doc.getRootElement();
Namespace ns = Namespace.getNamespace
("http://www.mislibros.com/libros/javaxml");
Element tit = raiz.getChild("Titulo", ns);
System.out.println(tit.getText() + "\n");
Element cont = raiz.getChild("Contenido", ns);
List caps = cont.getChildren("Capitulo", ns);
for (int i=0; i<caps.size(); i++) {
Element cap = (Element)caps.get(i);
System.out.println(cap.getChildText("Tema", ns));
}
} catch (JDOMException e) {
System.out.println(e);
}
}
}
}
Ventajas y desventajas
- Como aspectos positivos de JDOM, a modo de ejemplo, se
pueden observar los siguientes, que facilitan el trabajo con los
documentos XML:
- El método getText() devuelve directamente el texto
contenido en un elemento, mientras que la forma más simple de
hacerlo con DOM sería getFirstChild().getNodeValue().
- Otro método muy útil es getChildText(), que
devuelve el texto de un hijo. Esta misma tarea con DOM
requeriría bastante más código.
- Se utilizan clases estándar del estilo List
y Map, incluidas en Java desde su versión 1.2, en lugar
de las clases NodeList y NamedNodeMap que
vienen con DOM.
- Existen una serie de adaptadores que permiten construir un
documento especificando un determinado analizador, pero sin
necesidad de importar explícitamente la clase necesaria
(portabilidad).
- En cuanto a los aspectos negativos de JDOM, también a
modo de ejemplo:
- No existe un método equivalente al muy útil
getElementsByTagName que con DOM nos permitía obtener
elementos de cualquier nivel por debajo del actual.
- Es necesario especificar el espacio de nombres,
incluso cuando se trabaja sin prefijo alguno.
Una API en desarrollo
- De cualquier forma, la API JDOM todavía se encuentra en
fase beta, por lo que es previsible que cambie algo hasta
la finalización de la versión 1.0.
- Actualmente forma parte del JCP (Java Community
Process) mediante una JSR (Java Specification Request), por lo que
seguramente formará parte de una versión futura del JDK.
Marcos de publicación web
El problema
- Imaginemos un gran sitio web formado por decenas o
incluso cientos de páginas HTML.
- Se desea permitir un acceso múltiple al contenido a
través de un navegador o a través de móviles WAP (sin descartar
más formas de acceso en el futuro), e incluso que se puedan
imprimir los contenidos con calidad utilizando un formato como
PDF.
- También es deseable que se pueda realizar sin demasiada
dificultad un completo cambio de imagen en todo el sitio
web.
Soluciones con tecnología conocida
- Las hojas de estilo en cascada (CSS) pueden ayudar un
poco en esta tarea, pero no lo suficiente.
- Con un sistema basado en Java Servlets se debería
cambiar el código de éstos, e incluso añadir más servlets, con las
consiguientes recompilaciones, configuraciones y riesgos para el
funcionamiento del sistema.
- Una solución bastante buena es el uso de páginas JSP,
sobre todo si se combina con el uso de beans y librerías de
etiquetas.
Contenido y presentación
- De lo que se trata en el fondo es de hallar la mejor forma de
separar contenido y presentación.
- Por un lado tendríamos el contenido, los datos, y por
otro lado distintas vistas o formas de presentar los datos.
- De esta forma un cambio de imagen sólo afecta a una o
varias vistas. La necesidad de mostrar los datos en otro
formato sólo implica la creación de otra vista.
La solución: marcos de publicación web
- Un marco de publicación es un sistema que sirve
contenido web aplicando los principios de la separación entre
contenido y presentación que hemos visto.
- Para el contenido se utiliza XML y para la presentación
XSL (tanto XSLT como XSL-FO).
- Más en detalle, un marco de publicación web XML/XSL es
un sistema que:
- Admite peticiones de documentos en diversos formatos.
- Obtiene la información adecuada de las posibles fuentes
de datos XML.
- Obtiene la información sobre las transformaciones XSL
necesarias y se las aplica a los datos.
- Formatea el resultado final y lo sirve como respuesta
a la petición inicial.
Ventajas
- Separación limpia entre contenido y presentación (que
lleva consigo la separación clara entre distintos roles de
trabajo).
- Proporciona una mejora muy notable del mantenimiento:
se puede realizar un cambio radical de imagen de todo un site web
con tan solo modificar las hojas XSL y sin tocar ni una sola línea
de código.
- A partir de un solo documento XML con el contenido, se
pueden obtener páginas HTML para su presentación web, páginas WML
para dispositivos WAP, documentos PDF para imprimir, etc.
- Aunque no hay ningún estándar que regule cómo debe ser un
sistema de publicación, si que está basado en estándares con
mucha fuerza en el mercado, por lo que es más sencillo pasar
de usar uno a usar otro.
- Es compatible con el resto de tecnologías web como
servlets, JSPs...
Un ejemplo de marco de publicación:
Cocoon
- La principal desventaja de estos sistemas es la poca
madurez de la mayoría.
- El más maduro y reconocido en este momento es
Cocoon, cuya versión 2.0 ya se encuentra disponible, con
muchas mejoras en cuanto a facilidad de uso y eficiencia sobre la
serie 1.x.
- Veamos algunas de sus características:
- Forma parte del proyecto colaborativo de código
abierto Apache.
- Es altamente configurable. Por ejemplo, podemos
elegir el analizador XML y el procesador XSLT que más nos
gusten.
- Permite diferenciar el procesado del documento en
función del dispositivo o tipo de software que realiza la
petición.
- Incorpora un sistema de caché que permite un
rendimiento muy elevado.
- Puede trabajar como un programa en línea de comandos pero su
uso normal es como un sistema de servlets para la
publicación a través de la Web.
- Incorpora las páginas XSP, que son documentos XML que
aparte de contenido estático incluyen lógica para crear XML
dinámicamente. Son parecidas a las páginas JSP, pero pretenden
solucionar algunos problemas de éstas.
|
|
|