Consultas XPath para gestión de información sobre bailes
Mostrar cada uno de los nombres de los bailes
for $baile in /bailes/baile
return <losbailes>{$baile/nombre/text()}</losbailes>
Mostrar los nombres de los bailes con el número de plazas
for $baile in /bailes/baile
return <losbailes>{$baile/nombre/text()} ({$baile/plazas/text()})</losbailes>
Mostrar los nombres de los bailes con precio mayor de 30
for $baile in /bailes/baile
where $baile/precio > 30
return $baile/nombre
for $baile in /bailes/baile[precio > 30]
return $baile/nombre
Mostrar los nombres de los bailes con precio mayor de 30 y moneda euro
for $baile in /bailes/baile
where $baile/precio > 30 and $baile/precio/@moneda = "euro"
return $baile/nombre
for $baile in /bailes/baile[precio > 30 and precio/@moneda = "euro"]
return $baile/nombre
Mostrar nombres y fecha de comienzo de los bailes que comiencen en enero
for $baile in /bailes/baile
where contains($baile/comienzo, "/1/")
return
<baile>
{$baile/profesor}
{$baile/comienzo}
</baile>
Mostrar nombres de profesores y sala, ordenados por sala
for $baile in /bailes/baile
order by $baile/sala
return
<baile>
{$baile/profesor}
{$baile/sala}
</baile>
Mostrar nombres de profesores sin repetir y salas donde dan clase, ordenados por nombre
for $profesor in distinct-values(/bailes/baile/profesor)
let $salas := /bailes/baile[profesor=$profesor]/sala
order by $profesor
return
<profesores>
<nombre>{$profesor}</nombre>
{$salas}
</profesores>
Mostrar la media de los precios de todos los bailes
let $baile := /bailes/baile
return <media>{avg($baile/precio)}</media>
Mostrar la suma de los precios de los bailes de la sala 1
let $baile := /bailes/baile[sala=1]
return <total_sala_1>{sum($baile/precio)}</total_sala_1>
Mostrar cuántas plazas oferta el profesor "Jesus Lozano"
let $baile := /bailes/baile[profesor = "Jesus Lozano"]
return <plazas>{sum($baile/plazas)}</plazas>
Mostrar las ganancias de "Laura Mendiola" si se completan todas las plazas
let $baile := /bailes/baile[profesor = "Laura Mendiola"]
return $baile/plazas * $baile/precio
Mostrar las ganancias de "Jesus Lozano" por cada baile si se completan las plazas
for $baile in /bailes/baile
where $baile/profesor = "Jesus Lozano"
return <beneficio>{$baile/plazas * $baile/precio}</beneficio>
Mostrar las ganancias de "Laura" si se completan todas las plazas
for $baile in /bailes/baile
where starts-with($baile/profesor, "Laura")
return <beneficio>{$baile/plazas * $baile/precio}</beneficio>
for $baile in /bailes/baile[starts-with(profesor, "Laura")]
return <beneficio>{$baile/plazas * $baile/precio}</beneficio>
Mostrar nombre, precio y precio con descuento del 15% para familias numerosas, ordenados por nombre
for $baile in /bailes/baile
order by $baile/nombre
return
<baile>
{$baile/nombre}
<precio>{$baile/precio/text()}</precio>
<fam_numerosa>{$baile/precio * 0.85}</fam_numerosa>
</baile>
Mostrar todos los datos de cada baile excepto la fecha de comienzo y de fin
for $baile in /bailes/baile
return <baile>{$baile/* except $baile/comienzo except $baile/fin}</baile>
Mostrar en una tabla HTML los nombres de los bailes y su profesor
<table> {
for $baile in /bailes/baile
return <tr><td>{$baile/nombre/text()}</td><td>{$baile/profesor/text()}</td></tr>
} </table>