En esta guÃa aprenderás las bases de XPath y XQuery, dos tecnologÃas fundamentales para trabajar con documentos XML. Usaremos el siguiente ejemplo XML, que representa una biblioteca de libros, como base para las consultas.
Archivo XML: Biblioteca
Este archivo contiene información sobre libros, incluidos tÃtulo, autor, género y fecha de publicación:
<?xml version="1.0" encoding="UTF-8"?>
<biblioteca>
<libro id="1">
<titulo>1984</titulo>
<autor>George Orwell</autor>
<genero>DistopÃa</genero>
<publicado>1949</publicado>
</libro>
<libro id="2">
<titulo>Crimen y Castigo</titulo>
<autor>Fiódor Dostoyevski</autor>
<genero>Ficción</genero>
<publicado>1866</publicado>
</libro>
<libro id="3">
<titulo>El Hobbit</titulo>
<autor>J.R.R. Tolkien</autor>
<genero>FantasÃa</genero>
<publicado>1937</publicado>
</libro>
<libro id="4">
<titulo>Un Mundo Feliz</titulo>
<autor>Aldous Huxley</autor>
<genero>DistopÃa</genero>
<publicado>1932</publicado>
</libro>
<libro id="5">
<titulo>Orgullo y Prejuicio</titulo>
<autor>Jane Austen</autor>
<genero>Romance</genero>
<publicado>1813</publicado>
</libro>
</biblioteca>
¿Qué es XPath?
XPath es un lenguaje que permite navegar por elementos y atributos en documentos XML. Es útil para seleccionar nodos especÃficos o un conjunto de nodos.
Ejemplos de XPath
- Seleccionar todos los tÃtulos de los libros
/biblioteca/libro/titulo
Resultado:<titulo>1984</titulo> <titulo>Crimen y Castigo</titulo> <titulo>El Hobbit</titulo> <titulo>Un Mundo Feliz</titulo> <titulo>Orgullo y Prejuicio</titulo>
- Obtener los libros publicados antes de 1900
/biblioteca/libro[publicado < 1900]
Resultado:<libro id="2"> <titulo>Crimen y Castigo</titulo> <autor>Fiódor Dostoyevski</autor> <genero>Ficción</genero> <publicado>1866</publicado> </libro> <libro id="5"> <titulo>Orgullo y Prejuicio</titulo> <autor>Jane Austen</autor> <genero>Romance</genero> <publicado>1813</publicado> </libro>
- Seleccionar los tÃtulos de los libros de género «DistopÃa»
/biblioteca/libro[genero='DistopÃa']/titulo
Resultado:<titulo>1984</titulo> <titulo>Un Mundo Feliz</titulo>
- Seleccionar el autor del libro con id=»3″
/biblioteca/libro[@id='3']/autor
Resultado:<autor>J.R.R. Tolkien</autor>
¿Qué es XQuery?
XQuery es un lenguaje más avanzado que permite realizar consultas y transformar documentos XML. A diferencia de XPath, XQuery incluye capacidades como ordenar, filtrar y combinar datos.
Ejemplos de XQuery
- Listar tÃtulos y autores ordenados alfabéticamente por tÃtulo
for $libro in doc("biblioteca.xml")/biblioteca/libro order by $libro/titulo return <libroOrdenado> <titulo>{ $libro/titulo }</titulo> <autor>{ $libro/autor }</autor> </libroOrdenado>
Resultado:<libroOrdenado> <titulo>1984</titulo> <autor>George Orwell</autor> </libroOrdenado> ...
- Obtener los libros publicados antes de 1900 y crear una lista personalizada
for $libro in doc("biblioteca.xml")/biblioteca/libro where $libro/publicado < 1900 return <antiguoLibro> <titulo>{ $libro/titulo }</titulo> <autor>{ $libro/autor }</autor> <publicado>{ $libro/publicado }</publicado> </antiguoLibro>
Resultado:<antiguoLibro> <titulo>Crimen y Castigo</titulo> <autor>Fiódor Dostoyevski</autor> <publicado>1866</publicado> </antiguoLibro> <antiguoLibro> <titulo>Orgullo y Prejuicio</titulo> <autor>Jane Austen</autor> <publicado>1813</publicado> </antiguoLibro>
- Agrupar libros por género
for $genero in distinct-values(doc("biblioteca.xml")/biblioteca/libro/genero) return <generoCategoria> <genero>{ $genero }</genero> <libros> { for $libro in doc("biblioteca.xml")/biblioteca/libro[genero = $genero] return <libro>{ $libro/titulo }</libro> } </libros> </generoCategoria>
Resultado:<generoCategoria> <genero>DistopÃa</genero> <libros> <libro>1984</libro> <libro>Un Mundo Feliz</libro> </libros> </generoCategoria> ...
¿Cuándo usar XPath y XQuery?
- XPath: Úsalo para consultas rápidas y directas en un archivo XML. Ideal para selecciones simples y navegación.
- XQuery: Empléalo cuando necesites transformar datos, crear nuevos documentos XML o realizar consultas complejas, como ordenar y agrupar.
Herramientas para Trabajar con XPath y XQuery
- BaseX: Un entorno completo para ejecutar XPath y XQuery.
- Oxygen XML Editor: Ideal para desarrollar y probar tus consultas.
- Saxon: Procesador potente para ejecutar XQuery.
- Navegadores web: Algunos navegadores permiten ejecutar XPath directamente en la consola.
Conclusión
XPath y XQuery son herramientas indispensables para trabajar con XML. Mientras XPath es sencillo y directo, XQuery te ofrece un nivel avanzado para manejar datos estructurados. Prueba los ejemplos de esta guÃa con tus propios archivos XML para aprender y adaptarte a tus necesidades. ¡El universo de XML está a tu alcance! 🚀