Introducción
XQuery es un lenguaje crucial para la consulta y manipulación de datos XML, especialmente en el desarrollo de aplicaciones web (DAW). Este artículo presenta un archivo XML de ejemplo junto con una serie de ejercicios prácticos y sus soluciones en XQuery. Estos ejercicios te ayudarán a dominar XQuery y prepararte eficazmente para tu examen.
Archivo XML de Ejemplo
Consideremos el siguiente archivo XML que contiene información sobre una biblioteca digital, llamado biblioteca.xml
:
<biblioteca>
<libro>
<titulo>1984</titulo>
<autor>George Orwell</autor>
<genero>Ficción</genero>
<precio>15.99</precio>
<fecha_publicacion>1949-06-08</fecha_publicacion>
<disponible>true</disponible>
</libro>
<libro>
<titulo>Orgullo y Prejuicio</titulo>
<autor>Jane Austen</autor>
<genero>Romance</genero>
<precio>12.99</precio>
<fecha_publicacion>1813-01-28</fecha_publicacion>
<disponible>true</disponible>
</libro>
<libro>
<titulo>El Gran Gatsby</titulo>
<autor>F. Scott Fitzgerald</autor>
<genero>Ficción</genero>
<precio>10.99</precio>
<fecha_publicacion>1925-04-10</fecha_publicacion>
<disponible>false</disponible>
</libro>
</biblioteca>
Ejercicio 1: Selección de Libros por Disponibilidad
Pregunta: Escribe una consulta XQuery que retorne los títulos de los libros que están disponibles.
Solución:
for $libro in doc("biblioteca.xml")//libro
where $libro/disponible = "true"
return $libro/titulo
Ejercicio 2: Filtrar Libros por Autor
Pregunta: Escribe una consulta XQuery que retorne los títulos y precios de los libros escritos por «Jane Austen».
Solución:
for $libro in doc("biblioteca.xml")//libro
where $libro/autor = "Jane Austen"
return <libro>
<titulo>{$libro/titulo}</titulo>
<precio>{$libro/precio}</precio>
</libro>
Ejercicio 3: Ordenar Libros por Precio
Pregunta: Escribe una consulta XQuery que retorne los libros ordenados por precio en orden descendente.
Solución:
for $libro in doc("biblioteca.xml")//libro
order by $libro/precio descending
return $libro
Ejercicio 4: Calcular el Precio Promedio de los Libros
Pregunta: Escribe una consulta XQuery que calcule y retorne el precio promedio de todos los libros en la biblioteca.
Solución:
let $precios := doc("biblioteca.xml")//libro/precio
let $promedio := avg($precios)
return <precio_promedio>{$promedio}</precio_promedio>
Ejercicio 5: Agrupar Libros por Género
Pregunta: Escribe una consulta XQuery que agrupe los libros por género y muestre el número de libros en cada género.
Solución:
let $libros := doc("biblioteca.xml")//libro
for $genero in distinct-values($libros/genero)
let $conteo := count($libros[genero = $genero])
return <genero>
<nombre>{$genero}</nombre>
<cantidad_libros>{$conteo}</cantidad_libros>
</genero>
Ejercicio 6: Libros Publicados Antes de 1950
Pregunta: Escribe una consulta XQuery que retorne los títulos de los libros publicados antes del 1 de enero de 1950.
Solución:
for $libro in doc("biblioteca.xml")//libro
where $libro/fecha_publicacion < xs:date("1950-01-01")
return $libro/titulo
Ejercicio 7: Calcular el Valor Total de los Libros Disponibles
Pregunta: Escribe una consulta XQuery que calcule y retorne el valor total de todos los libros disponibles (precio * cantidad).
Solución:
let $libros := doc("biblioteca.xml")//libro
let $total := sum(
for $libro in $libros
where $libro/disponible = "true"
return $libro/precio
)
return <valor_total>{$total}</valor_total>
Ejercicio 8: Información Completa de Libros por Autor
Pregunta: Escribe una consulta XQuery que retorne toda la información de los libros escritos por «George Orwell».
Solución:
for $libro in doc("biblioteca.xml")//libro
where $libro/autor = "George Orwell"
return $libro
Conclusión
Estos ejercicios prácticos proporcionan una base sólida para trabajar con XQuery y datos XML, habilidades cruciales en el desarrollo de aplicaciones web. Practicar con estos ejemplos te preparará mejor para tus exámenes de DAW y mejorará tu capacidad para manejar datos XML de manera efectiva. ¡Sigue practicando para convertirte en un experto en XQuery!
Gracias por visitar mi blog de informática, mi nombre es Tomás y soy formador y desarrollador web. Si quiere usted dejarme alguna sugerencia, ayuda o quiere un servicio de formación estoy escuchando ofertas en tomas.gonzalez@infogonzalez.com, en Facebook a https://www.facebook.com/Infogonzalez estoy deseando escucharle. Su duda o sugerencia NO molesta.