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
id
correspondiente 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 Shue
se 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
id
correspondiente 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 Shue
se 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()