Ejercicios Prácticos de XQuery con XML: Preparación Avanzada para el Examen de DAW

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!

gray and black laptop computer
Photo by Pixabay on Pexels.com
error: Content is protected !!

Descubre más desde InfoGonzalez - Blog de formador e informático

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad
Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.