Ejercicio 520
Consideremos el siguiente documento XML.
Construye las expresiones XPath que permitan obtener los siguientes datos:
- Los comentarios.
- Los comentarios de la película
Leaving Las Vegas. - Las películas de género
Drama. - Los nombres de las actrices.
- Los elementos que continen algún texto (elemento no vacíos).
- Las películas en las que el título sea igual al título original.
- Los atributos
idcorrespondiente a la actrizElisabeth Shue. - Los títulos de las películas en las que participó un actor del atributo
id=51. - Obten los títulos de las películas en las que participó la actriz con nombre
Elisabeth Shue. - El título de la última película del documento.
- La suma de los importes de aquellas películas cuyo importe venga en dólares.
- La suma (en euros) de los importes de las películas. Consideramos un cambio de 1€ = 1,4$.
- Si modificáramos el XML anterior de forma que el nodo
<actor>deElisabeth Shuese llamara<actriz>, ¿cuál sería la expresión si quieramos obtener el nombre de los actores que han compartido película conElisabeth Shue?
Solución
- Los comentarios.
//comment()
- Los comentarios de la película
Leaving Las Vegas.
/videoteca/pelicula[titulo="Leaving Las Vegas"]/comment()
- Las películas de género
Drama.
/videoteca/pelicula[genero="Drama"]
- Los nombres de las actrices.
/videoteca/actor[sexo="mujer"]/nome/text()
- Los elementos que continen algún texto (elemento no vacíos).
//*[exists(text())]
- Las películas en las que el título sea igual al título original.
/videoteca/pelicula[titulo = titulooriginal]
- Los atributos
idcorrespondiente a la actrizElisabeth Shue.
/videoteca/actor[nome="Elisabeth Shue"]/@id
- Los títulos de las películas en las que participó un actor del atributo
id=51.
/videoteca/pelicula[actua/@id="51"]/titulo/text()
- 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()
- El título de la última película del documento.
//pelicula[last()]/titulo/text()
- La suma de los importes de aquellas películas cuyo importe venga en dólares.
sum(/videoteca/pelicula/importe[@moneda="dólar"])
- 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"])))
- Si modificáramos el XML anterior de forma que el nodo
<actor>deElisabeth Shuese llamara<actriz>, ¿cuál sería la expresión si quieramos obtener el nombre de los actores que han compartido película conElisabeth Shue?
/videoteca/actor[@id=/videoteca/pelicula[actua/@id=/videoteca/actriz[nome="Elisabeth Shue"]/@id]/actua/@id]/nome/text()