Saltar al contenido principal

Ejercicio 520

Consideremos el siguiente documento XML.

Construye las expresiones XPath que permitan obtener los siguientes datos:

  1. Los comentarios.
  2. Los comentarios de la película Leaving Las Vegas.
  3. Las películas de género Drama.
  4. Los nombres de las actrices.
  5. Los elementos que continen algún texto (elemento no vacíos).
  6. Las películas en las que el título sea igual al título original.
  7. Los atributos id correspondiente a la actriz Elisabeth Shue.
  8. Los títulos de las películas en las que participó un actor del atributo id=51.
  9. Obten los títulos de las películas en las que participó la actriz con nombre Elisabeth Shue.
  10. El título de la última película del documento.
  11. La suma de los importes de aquellas películas cuyo importe venga en dólares.
  12. La suma (en euros) de los importes de las películas. Consideramos un cambio de 1€ = 1,4$.
  13. Si modificáramos el XML anterior de forma que el nodo <actor> de Elisabeth Shue se llamara <actriz>, ¿cuál sería la expresión si quieramos obtener el nombre de los actores que han compartido película con Elisabeth Shue?
Solución
  1. Los comentarios.
//comment()
  1. Los comentarios de la película Leaving Las Vegas.
/videoteca/pelicula[titulo="Leaving Las Vegas"]/comment()
  1. Las películas de género Drama.
/videoteca/pelicula[genero="Drama"]
  1. Los nombres de las actrices.
/videoteca/actor[sexo="mujer"]/nome/text()
  1. Los elementos que continen algún texto (elemento no vacíos).
//*[exists(text())]
  1. Las películas en las que el título sea igual al título original.
/videoteca/pelicula[titulo = titulooriginal]
  1. Los atributos id correspondiente a la actriz Elisabeth Shue.
/videoteca/actor[nome="Elisabeth Shue"]/@id
  1. Los títulos de las películas en las que participó un actor del atributo id=51.
/videoteca/pelicula[actua/@id="51"]/titulo/text()
  1. Obten los títulos de las películas en las que participó la actriz con nombre Elisabeth Shue.
/videoteca/pelicula[actua/@id=/videoteca/actor[nome="Elisabeth Shue"]/@id]/titulo/text()
  1. El título de la última película del documento.
//pelicula[last()]/titulo/text()
  1. La suma de los importes de aquellas películas cuyo importe venga en dólares.
sum(/videoteca/pelicula/importe[@moneda="dólar"])
  1. La suma (en euros) de los importes de las películas. Consideramos un cambio de 1€ = 1,4$.
sum((sum(/videoteca/pelicula/importe[@moneda="dólar"]/(text()*1.4)), sum(/videoteca/pelicula/importe[@moneda="euro"])))
  1. Si modificáramos el XML anterior de forma que el nodo <actor> de Elisabeth Shue se llamara <actriz>, ¿cuál sería la expresión si quieramos obtener el nombre de los actores que han compartido película con Elisabeth Shue?
/videoteca/actor[@id=/videoteca/pelicula[actua/@id=/videoteca/actriz[nome="Elisabeth Shue"]/@id]/actua/@id]/nome/text()