Saltar al contenido principal

Ejercicio 501

Consideremos el siguiente documento XML:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE agenda>
<agenda>
<propietario>
<identificadores>
<nombre>Alma</nombre>
<apellidos>López Terán</apellidos>
</identificadores>
<direccion>
<calle>El Percebe 13, 6F</calle>
<localidad>Torrelavega</localidad>
<cp>39300</cp>
</direccion>
<telefonos>
<movil>970898765</movil>
<casa>942124567</casa>
<trabajo>628983456</trabajo>
</telefonos>
</propietario>
<contactos>
<persona id="p01">
<identificadores>
<nombre>Inés</nombre>
<apellidos>López Pérez</apellidos>
</identificadores>
<direccion>
<calle>El Ranchito 24, 6B</calle>
<localidad>Santander</localidad>
<cp>39006</cp>
</direccion>
<telefonos>
<movil>970123123</movil>
</telefonos>
</persona>
<persona id="p02">
<identificadores>
<nombre>Roberto</nombre>
<apellidos>Gutiérrez Gómez</apellidos>
</identificadores>
<direccion>
<calle>El Marranito 4, 2F</calle>
<localidad>Santander</localidad>
<cp>39004</cp>
</direccion>
<telefonos>
<movil>970987456</movil>
<casa>942333323</casa>
</telefonos>
</persona>
<persona id="p03">
<identificadores>
<nombre>Juan</nombre>
<apellidos>Sánchez Martínez</apellidos>
</identificadores>
<direccion>
<calle>El Cangrejo 10, sn</calle>
<localidad>Torrelavega</localidad>
<cp>39300</cp>
</direccion>
<telefonos>
<movil>997564343</movil>
<casa>942987974</casa>
<trabajo>677899234</trabajo>
</telefonos>
</persona>
</contactos>
</agenda>

Construye las sentencias XPath que permitan obtener los siguientes datos:

  1. Nombre del propietario de la agenda.
  2. Teléfono de casa del propietario.
  3. Nombres y apellidos de los contactos de la agenda.
  4. Nombre e identificador de cada contacto.
  5. Datos del contacto con identificador p02.
  6. Identificadores de los contactos que tienen móvil.

Solución

Solución
  1. Nombre del propietario de la agenda.
/agenda/propietario/identificadores/nombre
//propietario/identificadores/nombre
//propietario//nombre
  1. Teléfono de casa del propietario.
/agenda/propietario/telefonos/casa
//propietario/telefonos/casa
//propietario//casa
  1. Nombres y apellidos de los contactos de la agenda.
//contactos/persona/identificadores/nombre | //contactos/persona/identificadores/apellidos
  1. Nombre e identificador de cada contacto.
//contactos/persona/identificadores/nombre | //contactos/persona/@id
  1. Datos del contacto con identificador p02.
//contactos/persona[@id="p02"]/*/*
  1. Identificadores de los contactos que tienen móvil.
//contactos/persona/telefonos/movil/../../@id
//persona//movil/../../@id
/agenda/contactos/persona[exists(telefonos/movil)]/@id
//persona[exists(telefonos/movil)]/@id