apuntes+santiggd+5-5-08

Antes teniamos que ir bajando desde el elemento raiz a traves de todos los hijos hasta el elemento que deseamos encontrar, sin embargo hay una forma mas directa de acceder, que es a través de XPath. Esta forma de acceder se basa en el acceso a directorios pero sobre el arbol DOM. El camino se especifica por una serie de pasos separados por /, y estos pasos pueden ser un especificador de eje, que nos permite movernos entre distintos lugares dentro del dom, un test de nodo que nos especifica el nombre del nodo que buscamos, o un predicado, que es una condición que buscamos sobre los nodos buscados.
 * XPath**

Vemos como funciona el ejemplo, y como resulta ser la forma más simple de acceder a cualquier nodo que deseamos dentro del xml. Para acceder a un nodo determinado usando un predicado, podemos acceder a él indexando los resultados como si fuera un array. Además podemos complicar un poco los predicados para que nos obtengan más cosas. Tambien podemos usar // al comienzo, lo que significa es que te va a dar todas las etiquetas con ese nombre independientemente de donde se encuentre.

Por lo general vamos a utilizar una base de datos en XML cuando tengamos información semiestructurada, de forma que podemos acceder facilmente a los datos. Una ventaja de xml es que hay muchos productos opensource y gratuitos, que por lo general van a ir montados sobre java. Tenemos por ejemplo eXist y Xindice.
 * Bases de datos XML**

La información se agrupa en colecciones que son grupos de ficheros xml que están relacionados. Vamos a ver ahora Xindice, al que podremos acceder de tres formas, bien por ventana de comandos, a traves de un programa o desde el propio navegador. La llamada desde linea de comandos se puede hacer xindice.sh lc -c xmldb:xindice://localhost:8180/db, donde llamamos al programa cliente y le pasamos una URI para que liste las colecciones que tenemos. A esto también podemos acceder desde el navegador llamando al servidor, y usando despues el nombre del programa como si se tratase de un subdirectorio, tratandose concretamente de un contexto en el servlet.

Además de visualizar colecciones podemos crearlas, y añadir ficheros a estas colecciones, donde podemos ademas especificar una clave, que es el nombre con el que queremos acceder a dicho recurso. Estos ficheros podemos recuperarlos usando rd, pero además podemos recuperar cierta información de los documentos que tenemos en la colección por medio del interfaz XPath, y el resultado t lo da como un documento xml xquery, dandote el contenido de la petición que tu le das.