XPath con escenario de videoteca
Sumario
Enunciado
O XML deste escenario é o seguinte.
<?xml version="1.0" encoding="utf-8"?>
<videoteca data_creación="24/02/2009">
<película id="1">
<importe moneda="dólar">13.56</importe>
<título>El santo</título>
<títuloorixinal>The Saint</títuloorixinal>
<ano>1997</ano>
<director>Phillip Noyce</director>
<xénero>Acción</xénero>
<duración>111</duración>
<!-- Elisabeth Shue -->
<actúa id="51"/>
<!-- Val Kilmer -->
<actúa id="156"/>
</película>
<película id="3">
<importe moneda="euro">22.18</importe>
<título>Leaving Las Vegas</título>
<títuloorixinal>Leaving Las Vegas</títuloorixinal>
<ano>1995</ano>
<director>Mike Figgis</director>
<xénero>Drama</xénero>
<duración>107</duración>
<!-- Nicolas Cage -->
<actúa id="187"/>
<!-- Elisabeth Shue -->
<actúa id="51"/>
</película>
<película id="4">
<importe moneda="dólar">11.52</importe>
<título>¿A quién ama Gilbert Grape?</título>
<títuloorixinal>What's Eating Gilbert Grape?</títuloorixinal>
<ano>1993</ano>
<director>Lasse Hallström</director>
<xénero>Drama</xénero>
<duración>118</duración>
<!-- Johnny Depp -->
<actúa id="139"/>
</película>
<actor id="51">
<nome>Elisabeth Shue</nome>
<sexo>muller</sexo>
<datanacemento>06/10/1963</datanacemento>
<url>http://www.imdb.com/name/nm0000223/</url>
</actor>
<actor id="139">
<nome>Johnny Depp</nome>
<sexo>home</sexo>
<datanacemento>09/06/1963</datanacemento>
<url>http://www.imdb.com/name/nm0000136/</url>
</actor>
<actor id="156">
<nome>Val Kilmer</nome>
<sexo>home</sexo>
<datanacemento>31/12/1959</datanacemento>
</actor>
<actor id="187">>
<nome>Nicolas Cage</nome>
<sexo>home</sexo>
<datanacemento>07/01/1964</datanacemento>
</actor>
</videoteca>
Rutas de localización con tests de nodo e predicados
Escribe as expresións XPath para obter os seguintes conxuntos de nodos:
1. Os comentarios.
Resutado agardado:
Expresión:
//comment()
2. Os comentarios da película "Leaving Las Vegas".
Resutado agardado:
Expresión:
//película[título="Leaving Las Vegas"]/comment()
3. As películas de xénero "Drama".
Resutado agardado:
Expresión:
//película[xénero="Drama"]
4. Os nomes das actrices.
Resutado agardado:
Expresión:
//actor[sexo="muller"]/nome
5. Os elementos non baleiros (conteñen algún texto).
Resutado agardado:
Expresión:
//*[text()]
Rutas de localización avanzadas
Escribe as expresións XPath para obter:
6. As películas nas que o título sexa igual ao título orixinal.
Resutado agardado:
Expresión:
//película[título=títuloorixinal]
7. O atributo "id" correspondente á actriz "Elisabeth Shue".
Resutado agardado:
Expresión:
//actor[nome="Elisabeth Shue"]/@id
8. Os títulos das películas nas que participou o actor con atributo id=51.
Resutado agardado:
Expresión:
//película[actúa/@id=51]/título
9. Baseándote nos dous resultados anteriores, escribe a expresión correspondente aos títulos das películas nas que participou a actriz de nome "Elisabeth Shue".
Resutado agardado:
Expresión:
//película[actúa/@id=//actor[nome="Elisabeth Shue"]/@id]/título
10. O título da última película que aparece no documento.
Resutado agardado:
Expresión:
//película[count(//película)]/título //película[last()]/título
11. A suma dos importes daquelas películas nas que o mesmo figura en dólares.
Resutado agardado:
Expresión:
sum(//importe[@moneda="dólar"])
12. A suma en euros dos importes das películas, considerando un cambio de 1€ = 1,4$.
Resutado agardado:
Expresión:
sum(//importe[@moneda="dólar"]) div 1.4 + sum(//importe[@moneda="euro"])
Solución
- [[]]
Referencias
- Traballo realizado durante unha licenza de formación retribuída pola Consellería de Cultura, Educación e Ordenación Universitaria. Margarita Pin Rodríguez, Víctor M. Lourido Estévez. Licenza Creative Commons BY-NC-SA (recoñecemento - non comercial - compartir igual).