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
Ejercicio 01: Conteo de Nodos por Tipo
Contar la ocurrencia de cada tipo de nodo:
alfa,beta,gamma,delta,épsilonytheta.Ejercicio 02: Nodos Hijos Directos del Raíz
Determinar el número de nodos
alfa,beta,gamma,delta,épsilonythetaque son hijos directos del elemento raíz.Ejercicio 03: Nodos Descendientes de un Elemento Delta
Contar el número de nodos
alfa,beta,gamma,épsilonythetaque son descendientes de un elementodelta.Ejercicio 04: Mostrar Valores de Atributos Específicos
Mostrar el valor de todos los atributos
attr1presentes en el documento.Ejercicio 05: Primer Hijo del Nodo Raíz
Identificar y mostrar el primer hijo del nodo raíz.
Ejercicio 06: Último Hijo del Nodo Raíz
Identificar y mostrar el último hijo del nodo raíz.
Ejercicio 07: Penúltimo Hijo del Nodo Raíz
Identificar y mostrar el penúltimo hijo del nodo raíz.
Ejercicio 08: Hijos del Nodo Raíz a partir del Segundo
Mostrar todos los hijos del nodo raíz, excluyendo el primero.
Ejercicio 09: Elemento Padre por Atributo Condicional
Mostrar el nombre del elemento padre de cualquier nodo que posea un atributo
attr2con un valor numérico superior a 5.Ejemplo de utilidad: Localizar la biblioteca que contiene un libro con un ISBN específico.
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.
Ejercicio 11: Conteo Condicional de Nodos Hijos
Contar el número de elementos
gammaque son hijos directos de un elementodeltaque, a su vez, posee el atributoattr2.Ejemplo de utilidad: Listar los títulos de todos los libros con un precio superior a 10 euros.
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.
Ejercicio 13: Conteo de Hijos Directos del Raíz
Contar el número de hijos directos que tiene el elemento raíz.
Ejercicio 14: Conteo de Elementos Hoja
Contar el número de elementos hoja (aquellos sin hijos) en el documento.
Ejercicio 15: Conteo de Elementos con Atributos
Contar el número de elementos que poseen al menos un atributo.
Ejercicio 16: Conteo de Nodos Alfa o Beta Hijos de Gamma
Contar el número total de elementos
alfaobetaque son hijos directos de un elementogamma. (La cuenta debe ser total, no la suma de conteos individuales).Ejercicio 17: Conteo de Ancestros por Contenido
Contar el número de ancestros del elemento que contiene el texto "Contenido 1".
Ejercicio 18: Conteo de Descendientes del Penúltimo Hijo
Contar el número de descendientes del penúltimo hijo del nodo raíz.
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
Solución 01
count(//alfa) count(//beta) count(//gamma) count(//delta) count(//épsilon) count(//theta)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)Solución 03
count(//delta//alfa) count(//delta//beta) count(//delta//gamma) count(//delta//épsilon) count(//delta//theta)Solución 04
//@attr1Solución 05
/raíz/*[1]Solución 06
/raíz/*[last()]Solución 07
/raíz/*[last()-1]Solución 08
/raíz/*[position()>1]Solución 09
//*[@attr2>5]/..Solución 10
//*[text()="Contenido 3"]Solución 11
count(//delta[@attr2]/gamma)Solución 12
count(/raíz/*/attribute::*)Solución 13
count(/raíz/*)Solución 14
count(//*[count(*)=0])Solución 15
count(//*[@*])Solución 16
count(//gamma/alfa | //gamma/beta)Solución 17
count(//*[text()='Contenido 1']/ancestor::*)Solución 18
count(/raíz/*[last()-1]/descendant::*)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
>
]>