martes, 19 de agosto de 2014

Ejercicios Xpath


XPath - Ejercicio 1 - Expresiones simples
Dado el siguiente documento XML, escriba las expresiones XPath que devuelvan la respuesta deseada (mostrada en los cuadros).
<?xml version="1.0" encoding="UTF-8"?>
<ies>
  <nombre>IES Abastos</nombre>
  <web>http://www.iesabastos.org</web>
  <ciclos>
    <ciclo id="ASIR">
      <nombre>Administración de Sistemas Informáticos en Red</nombre>
      <grado>Superior</grado>
      <decretoTitulo año="2009" />
    </ciclo>
    <ciclo id="DAW">
      <nombre>Desarrollo de Aplicaciones Web</nombre>
      <grado>Superior</grado>
      <decretoTitulo año="2010" />
    </ciclo>
    <ciclo id="SMR">
      <nombre>Sistemas Microinformáticos y Redes</nombre>
      <grado>Medio</grado>
      <decretoTitulo año="2008" />
    </ciclo>
  </ciclos>
</ies>
1. Nombre del Instituto:
<nombre>IES Abastos</nombre>

Solución:
//ies/nombre

2. Página web del Instituto:
http://www.iesabastos.org

Solución:
//web/text()

3. Nombre de los Ciclos Formativos:
Administración de Sistemas Informáticos en Red
Desarrollo de Aplicaciones Web
Sistemas Microinformáticos y Redes

Solución:
//ciclo/nombre/text()

4. Siglas por las que se conocen los Ciclos Formativos:
id="ASIR"
id="DAW"
id="SMR"

Soluciones:
//@id
//ciclo/@*


5. Años en los que se publicaron los decretos de título de los Ciclos Formativos:
año="2009"
año="2010"
año="2008"

Solución:
//@año

6. Ciclos Formativos de Grado Medio (se trata de obtener el elemento <ciclo> completo):
<ciclo id="SMR">
<nombre>Sistemas Microinformáticos y Redes</nombre>
<grado>Medio</grado>
<decretoTitulo año="2008"/>
</ciclo>

Soluciones:
//ciclo[grado="Medio"]
//grado[.="Medio"]/..


7. Nombre de los Ciclos Formativos de Grado Superior:
<nombre>Administración de Sistemas Informáticos en Red</nombre>
<nombre>Desarrollo de Aplicaciones Web</nombre>

Soluciones:
//ciclo[grado="Superior"]/nombre
//grado[.="Superior"]/../nombre


8. Nombre de los Ciclos Formativos anteriores a 2010:
Administración de Sistemas Informáticos en Red
Sistemas Microinformáticos y Redes

Soluciones:
//@año[.<2010]/../../nombre/text()
//decretoTitulo[@año<2010]/../nombre/text()


9. Nombre de los Ciclos Formativos de 2008 o 2010:
Desarrollo de Aplicaciones Web
Sistemas Microinformáticos y Redes

Soluciones:
(//@año[.=2008]|//@año[.=2010])/../../nombre/text()
//decretoTitulo[@año=2008 or @año=2010]/../nombre/text()


XPath - Ejercicio 2 - Expresiones simples
Dado el siguiente documento XML, escriba las expresiones XPath que devuelvan la respuesta deseada (mostrada en los cuadros).
<?xml version="1.0" encoding="UTF-8"?>
<ies>
  <modulos>
    <modulo id="0228">
      <nombre>Aplicaciones web</nombre>
      <curso>2</curso>
      <horasSemanales>4</horasSemanales>
      <ciclo>SMR</ciclo>
    </modulo>
    <modulo id="0372">
      <nombre>Gestión de bases de datos</nombre>
      <curso>1</curso>
      <horasSemanales>5</horasSemanales>
      <ciclo>ASIR</ciclo>
    </modulo>
    <modulo id="0373">
      <nombre>Lenguajes de marcas y sistemas de gestión de información</nombre>
      <curso>1</curso>
      <horasSemanales>3</horasSemanales>
      <ciclo>ASIR</ciclo>
      <ciclo>DAW</ciclo>
    </modulo>
    <modulo id="0376">
      <nombre>Implantación de aplicaciones web</nombre>
      <curso>2</curso>
      <horasSemanales>5</horasSemanales>
      <ciclo>ASIR</ciclo>
    </modulo>
  </modulos>
</ies>
1. Nombre de los módulos que se imparten en el Instituto:
Aplicaciones web
Gestión de bases de datos
Lenguajes de marcas y sistemas de gestión de información
Implantación de aplicaciones web

Solución:
//nombre/text()

2. Nombre de los módulos del ciclo ASIR:
Gestión de bases de datos
Lenguajes de marcas y sistemas de gestión de información
Implantación de aplicaciones web

Solución:
//modulo[ciclo="ASIR"]/nombre/text()

3. Nombre de los módulos que se imparten en el segundo curso de cualquier ciclo:
Aplicaciones web
Implantación de aplicaciones web

Solución:
//modulo[curso=2]/nombre/text()

4. Nombre de los módulos de menos de 5 horas semanales:
Aplicaciones web
Lenguajes de marcas y sistemas de gestión de información

Solución:
//modulo[horasSemanales<5]/nombre/text()

5. Nombre de los módulos que se imparten en el primer curso de ASIR:
Gestión de bases de datos
Lenguajes de marcas y sistemas de gestión de información

Solución:
//modulo[ciclo="ASIR" and curso=1]/nombre/text()

6. Horas semanales de los módulos de más de 3 horas semanales (4, 5, 5).
4
5
5

Soluciones
//modulo[horasSemanales>3]/horasSemanales/text()
//horasSemanales[.>3]/text()


XPath - Ejercicio 3 - Expresiones anidadas
Dado el siguiente documento XML, escriba las expresiones XPath que devuelvan la respuesta deseada (mostrada en los cuadros).
<?xml version="1.0" encoding="UTF-8"?>
<ies>
  <nombre>IES Abastos</nombre>
  <web>http://www.iesabastos.org</web>
  <ciclos>
    <ciclo id="ASIR">
      <nombre>Administración de Sistemas Informáticos en Red</nombre>
      <grado>Superior</grado>
      <decretoTitulo año="2009" />
    </ciclo>
    <ciclo id="DAW">
      <nombre>Desarrollo de Aplicaciones Web</nombre>
      <grado>Superior</grado>
      <decretoTitulo año="2010" />
    </ciclo>
    <ciclo id="SMR">
      <nombre>Sistemas Microinformáticos y Redes</nombre>
      <grado>Medio</grado>
      <decretoTitulo año="2008" />
    </ciclo>
  </ciclos>
  <modulos>
    <modulo id="0228">
      <nombre>Aplicaciones web</nombre>
      <curso>2</curso>
      <horasSemanales>4</horasSemanales>
      <ciclo>SMR</ciclo>
    </modulo>
    <modulo id="0372">
      <nombre>Gestión de bases de datos</nombre>
      <curso>1</curso>
      <horasSemanales>5</horasSemanales>
      <ciclo>ASIR</ciclo>
    </modulo>
    <modulo id="0373">
      <nombre>Lenguajes de marcas y sistemas de gestión de información</nombre>
      <curso>1</curso>
      <horasSemanales>3</horasSemanales>
      <ciclo>ASIR</ciclo>
      <ciclo>DAW</ciclo>
    </modulo>
    <modulo id="0376">
      <nombre>Implantación de aplicaciones web</nombre>
      <curso>2</curso>
      <horasSemanales>5</horasSemanales>
      <ciclo>ASIR</ciclo>
    </modulo>
  </modulos>
</ies>
1. Nombre de los módulos del ciclo "Sistemas Microinformáticos y Redes". Nota: en la expresión final no deben aparecer las siglas SMR:
Aplicaciones web

Solución:
siglas del ciclo "Sistemas Microinformáticos y Redes":
//ciclo[nombre="Sistemas Microinformáticos y Redes"]/@id
módulos del ciclo SMR:
//modulo[ciclo="SMR"]/nombre/text()
sustituyendo la primera en la segunda:
//modulo[ciclo=//ciclo[nombre="Sistemas Microinformáticos y Redes"]/@id]/nombre/text()

2. Nombre de los ciclos que incluyen el módulo "Lenguajes de marcas y sistemas de gestión de información":
Administración de Sistemas Informáticos en Red
Desarrollo de Aplicaciones Web

Solución:
siglas de los ciclos que incluyen el módulo "Lenguajes de marcas y sistemas de gestión de información":
//modulo[nombre="Lenguajes de marcas y sistemas de gestión de información"]/ciclo/text()
nombre de los ciclos ASIR o DAW:
//ciclo[@id="ASIR"]/nombre/text()
//ciclo[@id="DAW"]/nombre/text()
 sustituyendo la primera en la segunda:
//ciclo[@id=//modulo[nombre="Lenguajes de marcas y sistemas de gestión de información"]/ciclo]/nombre/text()

3. Nombre de los módulos de ciclos de Grado Superior:
Gestión de bases de datos
Lenguajes de marcas y sistemas de gestión de información
Implantación de aplicaciones web

Solución:
siglas de los ciclos de grado superior:
//ciclo[grado="Superior"]/@id
módulos de los ciclos ASIR o DAW:
//modulo[ciclo="ASIR"]/nombre/text()
//modulo[ciclo="DAW"]/nombre/text()

sustituyendo la primera en la segunda:
//modulo[ciclo=//ciclo[grado="Superior"]/@id]/nombre/text()

4. Nombre de los módulos de ciclos cuyo título se aprobó en 2008:
Aplicaciones web

Solución:
siglas de los ciclos cuyo título se aprobó en 2008:
//decretoTitulo[@año=2008]/../@id
 módulos del ciclo SMR:
//modulo[ciclo="SMR"]/nombre/text()
sustituyendo la primera en la segunda:
//modulo[ciclo=//decretoTitulo[@año=2008]/../@id]/nombre/text()
5. Grado de los ciclos con módulos de primer curso:
Superior
Superior

Solución:
siglas de los ciclos con módulos de primer curso:
//modulo[curso=1]/ciclo
 Grados de los ciclos ASIR o DAW:
//ciclo[@id="ASIR"]/grado/text()
//ciclo[@id="DAW"]/grado/text()

 sustituyendo la primera en la segunda:
//ciclo[@id=//modulo[curso=1]/ciclo]/grado/text()

No hay comentarios:

Publicar un comentario