Introducción
XQuery es un lenguaje indispensable para la consulta y manipulación de datos XML, especialmente en el desarrollo de aplicaciones web (DAW). En este artículo, presentamos un archivo XML de ejemplo y una serie de ejercicios prácticos con soluciones en XQuery. Estos ejercicios te ayudarán a fortalecer tu comprensión y habilidades en el uso de XQuery.
Archivo XML de Ejemplo
Consideremos el siguiente archivo XML que contiene información sobre una biblioteca de música, llamado musica.xml
:
<biblioteca>
<album>
<titulo>The Dark Side of the Moon</titulo>
<artista>Pink Floyd</artista>
<genero>Rock</genero>
<precio>15.99</precio>
<fecha_lanzamiento>1973-03-01</fecha_lanzamiento>
</album>
<album>
<titulo>Thriller</titulo>
<artista>Michael Jackson</artista>
<genero>Pop</genero>
<precio>12.99</precio>
<fecha_lanzamiento>1982-11-30</fecha_lanzamiento>
</album>
<album>
<titulo>Back in Black</titulo>
<artista>AC/DC</artista>
<genero>Rock</genero>
<precio>10.99</precio>
<fecha_lanzamiento>1980-07-25</fecha_lanzamiento>
</album>
</biblioteca>
Ejercicio 1: Selección de Álbumes por Género
Pregunta: Escribe una consulta XQuery que retorne los títulos de los álbumes del género «Rock».
Solución:
for $album in doc("musica.xml")//album
where $album/genero = "Rock"
return $album/titulo
Ejercicio 2: Filtrar Álbumes por Artista
Pregunta: Escribe una consulta XQuery que retorne los títulos y precios de los álbumes del artista «Michael Jackson».
Solución:
for $album in doc("musica.xml")//album
where $album/artista = "Michael Jackson"
return <album>
<titulo>{$album/titulo}</titulo>
<precio>{$album/precio}</precio>
</album>
Ejercicio 3: Ordenar Álbumes por Fecha de Lanzamiento
Pregunta: Escribe una consulta XQuery que retorne los álbumes ordenados por fecha de lanzamiento en orden descendente.
Solución:
for $album in doc("musica.xml")//album
order by $album/fecha_lanzamiento descending
return $album
Ejercicio 4: Calcular el Precio Promedio de los Álbumes
Pregunta: Escribe una consulta XQuery que calcule y retorne el precio promedio de todos los álbumes en la biblioteca.
Solución:
let $precios := doc("musica.xml")//album/precio
let $promedio := avg($precios)
return <precio_promedio>{$promedio}</precio_promedio>
Ejercicio 5: Agrupar Álbumes por Artista
Pregunta: Escribe una consulta XQuery que agrupe los álbumes por artista y muestre el número de álbumes que tiene cada uno.
Solución:
let $albums := doc("musica.xml")//album
for $artista in distinct-values($albums/artista)
let $conteo := count($albums[artista = $artista])
return <artista>
<nombre>{$artista}</nombre>
<cantidad_albumes>{$conteo}</cantidad_albumes>
</artista>
Ejercicio 6: Álbumes Publicados Después de una Fecha Específica
Pregunta: Escribe una consulta XQuery que retorne los títulos de los álbumes publicados después del 1 de enero de 1980.
Solución:
for $album in doc("musica.xml")//album
where $album/fecha_lanzamiento > xs:date("1980-01-01")
return $album/titulo
Conclusión
Estos ejercicios prácticos te ofrecen una visión integral del uso de XQuery para manipular y consultar datos XML. Practicar con estos ejemplos te preparará mejor para tus exámenes de DAW y te ayudará a desarrollar competencias clave en el manejo de datos XML. ¡Sigue practicando y explorando las capacidades de XQuery para convertirte en un experto en este lenguaje!