Dominando Consultas XPath: Ejercicios Prácticos y Soluciones para Estructuras XML

Enviado por Chuletator online y clasificado en Matemáticas

Escrito el en español con un tamaño de 7,05 KB

Introducción a las Consultas XPath

Este documento presenta una serie de ejercicios prácticos diseñados para afianzar el conocimiento y la aplicación de expresiones XPath en la manipulación y consulta de estructuras de documentos XML. Cada ejercicio plantea un problema específico de selección o conteo de nodos y atributos, seguido de su correspondiente solución en XPath, y se complementa con un ejemplo de utilidad para contextualizar su aplicación en escenarios reales.

Ejercicios Propuestos de XPath

  1. Ejercicio 01: Conteo de Nodos por Tipo

    Contar la ocurrencia de cada tipo de nodo: alfa, beta, gamma, delta, épsilon y theta.

  2. Ejercicio 02: Nodos Hijos Directos del Raíz

    Determinar el número de nodos alfa, beta, gamma, delta, épsilon y theta que son hijos directos del elemento raíz.

  3. Ejercicio 03: Nodos Descendientes de un Elemento Delta

    Contar el número de nodos alfa, beta, gamma, épsilon y theta que son descendientes de un elemento delta.

  4. Ejercicio 04: Mostrar Valores de Atributos Específicos

    Mostrar el valor de todos los atributos attr1 presentes en el documento.

  5. Ejercicio 05: Primer Hijo del Nodo Raíz

    Identificar y mostrar el primer hijo del nodo raíz.

  6. Ejercicio 06: Último Hijo del Nodo Raíz

    Identificar y mostrar el último hijo del nodo raíz.

  7. Ejercicio 07: Penúltimo Hijo del Nodo Raíz

    Identificar y mostrar el penúltimo hijo del nodo raíz.

  8. Ejercicio 08: Hijos del Nodo Raíz a partir del Segundo

    Mostrar todos los hijos del nodo raíz, excluyendo el primero.

  9. Ejercicio 09: Elemento Padre por Atributo Condicional

    Mostrar el nombre del elemento padre de cualquier nodo que posea un atributo attr2 con un valor numérico superior a 5.

    Ejemplo de utilidad: Localizar la biblioteca que contiene un libro con un ISBN específico.

  10. Ejercicio 10: Elemento por Contenido Textual

    Mostrar el nombre del elemento cuyo contenido textual exacto sea "Contenido 3".

    Ejemplo de utilidad: Seleccionar un libro específico por su título.

  11. Ejercicio 11: Conteo Condicional de Nodos Hijos

    Contar el número de elementos gamma que son hijos directos de un elemento delta que, a su vez, posee el atributo attr2.

    Ejemplo de utilidad: Listar los títulos de todos los libros con un precio superior a 10 euros.

  12. Ejercicio 12: Conteo Total de Atributos en Hijos del Raíz

    Contar el número total de atributos presentes en todos los hijos directos del elemento raíz.

  13. Ejercicio 13: Conteo de Hijos Directos del Raíz

    Contar el número de hijos directos que tiene el elemento raíz.

  14. Ejercicio 14: Conteo de Elementos Hoja

    Contar el número de elementos hoja (aquellos sin hijos) en el documento.

  15. Ejercicio 15: Conteo de Elementos con Atributos

    Contar el número de elementos que poseen al menos un atributo.

  16. Ejercicio 16: Conteo de Nodos Alfa o Beta Hijos de Gamma

    Contar el número total de elementos alfa o beta que son hijos directos de un elemento gamma. (La cuenta debe ser total, no la suma de conteos individuales).

  17. Ejercicio 17: Conteo de Ancestros por Contenido

    Contar el número de ancestros del elemento que contiene el texto "Contenido 1".

  18. Ejercicio 18: Conteo de Descendientes del Penúltimo Hijo

    Contar el número de descendientes del penúltimo hijo del nodo raíz.

  19. Ejercicio 19: Conteo de Hermanos del Segundo Hijo

    Contar el número de hermanos (elementos del mismo nivel) del segundo hijo del nodo raíz.

Soluciones XPath Detalladas

  1. Solución 01

    count(//alfa)
    count(//beta)
    count(//gamma)
    count(//delta)
    count(//épsilon)
    count(//theta)
  2. Solución 02

    count(/raíz/alfa)
    count(/raíz/beta)
    count(/raíz/gamma)
    count(/raíz/delta)
    count(/raíz/épsilon)
    count(/raíz/theta)
  3. Solución 03

    count(//delta//alfa)
    count(//delta//beta)
    count(//delta//gamma)
    count(//delta//épsilon)
    count(//delta//theta)
  4. Solución 04

    //@attr1
  5. Solución 05

    /raíz/*[1]
  6. Solución 06

    /raíz/*[last()]
  7. Solución 07

    /raíz/*[last()-1]
  8. Solución 08

    /raíz/*[position()>1]
  9. Solución 09

    //*[@attr2>5]/..
  10. Solución 10

    //*[text()="Contenido 3"]
  11. Solución 11

    count(//delta[@attr2]/gamma)
  12. Solución 12

    count(/raíz/*/attribute::*)
  13. Solución 13

    count(/raíz/*)
  14. Solución 14

    count(//*[count(*)=0])
  15. Solución 15

    count(//*[@*])
  16. Solución 16

    count(//gamma/alfa | //gamma/beta)
  17. Solución 17

    count(//*[text()='Contenido 1']/ancestor::*)
  18. Solución 18

    count(/raíz/*[last()-1]/descendant::*)
  19. Solución 19

    count(/raíz/*[2]/preceding-sibling::* | /raíz/*[2]/following-sibling::*)

Definición de Tipo de Documento (DTD)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html [
	<!ELEMENT html (head, body)>
	<!ELEMENT head (title)>
		<!ELEMENT title (#PCDATA)>
	<!ELEMENT body (form)>
		<!ELEMENT form (#PCDATA | input | fieldset | select | textarea)*>
			<!ATTLIST form 
				action CDATA #IMPLIED
				method (get | post | set) "get" 
			>
			<!ELEMENT input (#PCDATA)>
				<!ATTLIST input 
					type (text|submit|password|reset|radio|checkbox|button|color|
						date|time|url|email|file|number|range) #REQUIRED 
					name CDATA #IMPLIED
					value CDATA #IMPLIED
					min CDATA #IMPLIED
					max CDATA #IMPLIED
					onclick CDATA #IMPLIED
				>
			<!ELEMENT select (option+)>
				<!ATTLIST select name CDATA #IMPLIED>	
				 <!ELEMENT option (#PCDATA)>
					<!ATTLIST option value CDATA #IMPLIED>
			
			<!ELEMENT fieldset (#PCDATA | legend | select | input | textarea | fieldset)*>
				<!ELEMENT legend (#PCDATA)>
			<!ELEMENT textarea (#PCDATA)>
				<!ATTLIST textarea
					name CDATA #IMPLIED
					rows CDATA #IMPLIED
					cols CDATA #IMPLIED 
				>				
]>

Entradas relacionadas: