Ejercicios Prácticos de XQuery con XML: Guía de Preparación para DAW


Introducción

XQuery es un lenguaje robusto para la consulta y manipulación de datos en XML, ampliamente utilizado en el desarrollo de aplicaciones web (DAW). En este artículo, presentaremos un archivo XML ejemplo y una serie de ejercicios prácticos con soluciones en XQuery. Estos ejercicios te ayudarán a entender mejor cómo trabajar con datos XML y cómo escribir consultas XQuery efectivas.

Archivo XML de Ejemplo

Supongamos que tenemos un archivo XML que contiene información sobre una librería, llamado libreria.xml:

<libreria>
  <libro>
    <titulo>Aprendiendo XQuery</titulo>
    <autor>Juan Pérez</autor>
    <precio>29.99</precio>
    <fecha_publicacion>2021-03-15</fecha_publicacion>
  </libro>
  <libro>
    <titulo>XML para Principiantes</titulo>
    <autor>Maria Garcia</autor>
    <precio>19.99</precio>
    <fecha_publicacion>2020-07-22</fecha_publicacion>
  </libro>
  <libro>
    <titulo>Avanzando en XML</titulo>
    <autor>Juan Pérez</autor>
    <precio>39.99</precio>
    <fecha_publicacion>2022-01-10</fecha_publicacion>
  </libro>
</libreria>

Ejercicio 1: Selección de Libros por Precio

Pregunta: Escribe una consulta XQuery que retorne los títulos de los libros que cuestan más de $20.

Solución:

for $libro in doc("libreria.xml")//libro
where $libro/precio > 20
return $libro/titulo

Ejercicio 2: Filtrar por Autor

Pregunta: Escribe una consulta XQuery que retorne los títulos y precios de los libros escritos por «Juan Pérez».

Solución:

for $libro in doc("libreria.xml")//libro
where $libro/autor = "Juan Pérez"
return <libro>
         <titulo>{$libro/titulo}</titulo>
         <precio>{$libro/precio}</precio>
       </libro>

Ejercicio 3: Ordenar Libros por Fecha de Publicación

Pregunta: Escribe una consulta XQuery que retorne los libros ordenados por fecha de publicación en orden ascendente.

Solución:

for $libro in doc("libreria.xml")//libro
order by $libro/fecha_publicacion
return $libro

Ejercicio 4: Crear una Lista de Libros con Descuento

Pregunta: Escribe una consulta XQuery que aplique un descuento del 10% a todos los libros y retorne un nuevo elemento XML con los títulos y los precios después del descuento.

Solución:

for $libro in doc("libreria.xml")//libro
let $precio_descuento := $libro/precio * 0.9
return <libro>
         <titulo>{$libro/titulo}</titulo>
         <precio>{$precio_descuento}</precio>
       </libro>

Ejercicio 5: Contar el Número de Libros por Autor

Pregunta: Escribe una consulta XQuery que cuente cuántos libros ha escrito cada autor.

Solución:

let $libros := doc("libreria.xml")//libro
for $autor in distinct-values($libros/autor)
let $conteo := count($libros[autor = $autor])
return <autor>
         <nombre>{$autor}</nombre>
         <cantidad_libros>{$conteo}</cantidad_libros>
       </autor>

Conclusión

Estos ejercicios prácticos cubren una variedad de aspectos esenciales de XQuery, desde la selección y filtrado de datos hasta la manipulación y agrupamiento. Practicar con estos ejemplos te ayudará a mejorar tu habilidad para escribir consultas XQuery efectivas y a prepararte mejor para tus exámenes de DAW. ¡Sigue practicando y explorando las capacidades de XQuery para convertirte en un experto en el manejo de datos XML!

gray and black laptop computer
Photo by Pixabay on Pexels.com

Deja un comentario

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

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.