Ejemplo 1
La sintaxis básica de XPath es similar a localizar archivos en un sistema de archivos. Si la ruta comienza con una barra diagonal /, entonces la ruta representa una ruta absoluta a un elemento.
/AAA
Seleccione el elemento raíz AAA
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</AAA>
/AAA/CCC
Seleccione todos los elementos secundarios CCC de AAA
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</AAA>
/AAA/DDD/BBB
Selecciona todos los elementos secundarios de DDD, un elemento secundario de AAA
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</AAA>
Ejemplo 2
Si la ruta comienza con una doble barra //, significa que todos los elementos del documento que cumplen las reglas después de la doble barra // están seleccionados (independientemente de la relación jerárquica) //BBB
Seleccionar todos los elementos BBB
<AAA>
<BBB/>
<CCC/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
</CCC>
</AAA>
//DDD/BBB
Seleccione todos los elementos BBB cuyo elemento padre sea DDD
<AAA>
<BBB/>
<CCC/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
</CCC>
</AAA>
Ejemplo 3
El asterisco* significa seleccionar todos los elementos ubicados en la ruta antes del asterisco
/AAA/CCC/DDD/*
Seleccione todos los elementos con rutas adjuntas a /AAA/CCC/DDD
<AAA>
<XXX>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFFF/>
</DDD>
</XXX>
<CCC>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFFF/>
</DDD>
</CCC>
<CCC>
<BBB>
<BBB>
<BBB/>
</BBB>
</BBB>
</CCC>
</AAA>
/*/*/*/BBB
Seleccione todos los elementos BBB que tengan 3 elementos ancestros
<AAA>
<XXX>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFFF/>
</DDD>
</XXX>
<CCC>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFFF/>
</DDD>
</CCC>
<CCC>
<BBB>
<BBB>
<BBB/>
</BBB>
</BBB>
</CCC>
</AAA>
//*
Seleccionar todos los elementos
<AAA>
<XXX>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFFF/>
</DDD>
</XXX>
<CCC>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFFF/>
</DDD>
</CCC>
<CCC>
<BBB>
<BBB>
<BBB/>
</BBB>
</BBB>
</CCC>
</AAA>
Ejemplo 4
La expresión en el número cuadrado puede especificar aún más el elemento, donde el número representa la posición del elemento en el conjunto de selección y la función last() representa el último elemento en el conjunto de selección
/AAA/BBB[1]
.
Seleccione el primer elemento secundario BBB de AAA
<AAA>
<BBB/>
<BBB/>
<BBB/>
<BBB/>
</AAA>
/AAA/BBB[último()]
Seleccione el último elemento secundario BBB de AAA
<AAA>
<BBB/>
<BBB/>
<BBB/>
<BBB/>
</AAA>
Ejemplo 5
//@identificación
Seleccionar todos los atributos de identificación
<AAA>
<BBB id = "b1"/>
<BBB id = "b2"/>
<BBB nombre = "bbb"/>
<BBB/>
</AAA>
//BBB[@id]
Seleccione elementos BBB con atributos de identificación
<AAA>
<BBB id = "b1"/>
<BBB id = "b2"/>
<BBB nombre = "bbb"/>
<BBB/>
</AAA>
//BBB[@nombre]
Seleccione el elemento BBB con atributo de nombre
<AAA>
<BBB id = "b1"/>
<BBB id = "b2"/>
<BBB nombre = "bbb"/>
<BBB/>
</AAA>
//BBB[@*]
Seleccione elementos BBB con cualquier atributo
<AAA>
<BBB id = "b1"/>
<BBB id = "b2"/>
<BBB nombre = "bbb"/>
<BBB/>
</AAA>
//BBB[no(@*)]
Seleccionar elementos BBB sin atributos
<AAA>
<BBB id = "b1"/>
<BBB id = "b2"/>
<BBB nombre = "bbb"/>
<BBB/>
</AAA>
Ejemplo 6
El valor del atributo se puede utilizar como criterio de selección. La función normalizar espacio elimina los espacios iniciales y finales y reemplaza cadenas consecutivas de espacios con un solo espacio
//BBB[@id='b1']
Seleccione el elemento BBB que contiene el atributo id y su valor es 'b1'
<AAA>
<BBB id = "b1"/>
<BBB nombre = " bbb "/>
<BBB nombre = "bbb"/>
</AAA>
//BBB[@nombre='bbb']
Seleccione el elemento BBB que contiene el nombre del atributo y su valor es 'bbb'
<AAA>
<BBB id = "b1"/>
<BBB nombre = " bbb "/>
<BBB nombre = "bbb"/>
</AAA>
//BBB[normalizar-espacio(@nombre)='bbb']
Seleccione el elemento BBB que contiene el nombre del atributo y su valor (después de eliminar los espacios iniciales y finales usando la función normalize-space) es 'bbb'
<AAA>
<BBB id = "b1"/>
<BBB nombre = " bbb "/>
<BBB nombre = "bbb"/>
</AAA>
Ejemplo 7
La función count() puede contar el número de elementos seleccionados
//*[count(BBB)=2]
Seleccionar elementos con 2 elementos secundarios BBB
<AAA>
<CCC>
<BBB/>
<BBB/>
<BBB/>
</CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
<EEE>
<CCC/>
<DDDD/>
</EEE>
</AAA>
//*[cuenta(*)=2]
Seleccione un elemento con 2 hijos
<AAA>
<CCC>
<BBB/>
<BBB/>
<BBB/>
</CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
<EEE>
<CCC/>
<DDDD/>
</EEE>
</AAA>
//*[cuenta(*)=3]
Seleccione un elemento con 3 elementos secundarios
<AAA>
<CCC>
<BBB/>
<BBB/>
<BBB/>
</CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
<EEE>
<CCC/>
<DDDD/>
</EEE>
</AAA>
Ejemplo 8
La función name() devuelve el nombre del elemento, la función start-with() devuelve verdadero cuando la primera cadena de parámetro de la función comienza con el segundo carácter de parámetro y la función contiene() devuelve verdadero cuando devuelve su primer parámetro de cadena. verdadero cuando se incluye el segundo parámetro de cadena
//*[name()='BBB']
Seleccione todos los elementos denominados BBB (aquí equivalente a //BBB)
<AAA>
<CCO>
<BBB/>
<BBB/>
<BBB/>
</BCC>
<DDB>
<BBB/>
<BBB/>
</DDB>
<BEC>
<CCC/>
<DBD/>
</BEC>
</AAA>
//*[comienza-con(nombre(),'B')]
Seleccione todos los elementos cuyos nombres comiencen con "B"
<AAA>
<CCO>
<BBB/>
<BBB/>
<BBB/>
</BCC>
<DDB>
<BBB/>
<BBB/>
</DDB>
<BEC>
<CCC/>
<DBD/>
</BEC>
</AAA>
//*[contiene(nombre(),'C')]
Seleccione todos los elementos cuyos nombres contengan "C"
<AAA>
<CCO>
<BBB/>
<BBB/>
<BBB/>
</BCC>
<DDB>
<BBB/>
<BBB/>
</DDB>
<BEC>
<CCC/>
<DBD/>
</BEC>
</AAA>
Ejemplo 9
Se pueden combinar varias rutas utilizando el delimitador
//CCC |
Seleccione todos los elementos CCC y BBB
<AAA>
<BBB/>
<CCC/>
<DDD>
<CCC/>
</DDD>
<EEE/>
</AAA>
/AAA/EEE | //BBB
Seleccione todos los elementos BBB y todos los elementos EEE que sean hijos de AAA
<AAA>
<BBB/>
<CCC/>
<DDD>
<CCC/>
</DDD>
<EEE/>
</AAA>
/AAA/EEE | //DDD/CCC |
No hay límite para la cantidad de rutas que se pueden fusionar
<AAA>
<BBB/>
<CCC/>
<DDD>
<CCC/>
</DDD>
<EEE/>
</AAA>
Ejemplo 10
de
contexto. Como eje predeterminado, se puede ignorar.
Equivalente a /niño::AAA
<AAA>
<BBB/>
<CCC/>
</AAA>
/niño::AAA
Equivalente a /AAA
<AAA>
<BBB/>
<CCC/>
</AAA>
/AAA/BBB
Equivalente a /niño::AAA/niño::BBB
<AAA>
<BBB/>
<CCC/>
</AAA>
/niño::AAA/niño::BBB
Equivalente a /AAA/BBB
<AAA>
<BBB/>
<CCC/>
</AAA>
/niño::AAA/BBB
Ambos se pueden combinar
<AAA>
<BBB/>
<CCC/>
</AAA>
Ejemplo 11
El eje descendiente contiene los descendientes del nodo de contexto. Un descendiente se refiere a un nodo hijo o un nodo hijo de un nodo hijo, etc., por lo que el eje descendiente no contiene nodos de atributos ni de espacio de nombres
/descendiente::*.
Selecciona todos los descendientes del elemento raíz del documento. Es decir, se seleccionan todos los elementos.
<AAA>
<BBB>
<DDD>
<CCC>
<DDDD/>
<EEE/>
</CCC>
</DDD>
</BBB>
<CCC>
<DDD>
<EEE>
<DDD>
<FFFF/>
</DDD>
</EEE>
</DDD>
</CCC>
</AAA>
/AAA/BBB/descendiente::*
Selecciona todos los elementos descendientes de /AAA/BBB
<AAA>
<BBB>
<DDD>
<CCC>
<DDDD/>
<EEE/>
</CCC>
</DDD>
</BBB>
<CCC>
<DDD>
<EEE>
<DDD>
<FFFF/>
</DDD>
</EEE>
</DDD>
</CCC>
</AAA>
//CCC/descendiente::*
Selecciona todos los elementos que tengan CCC entre sus ancestros
<AAA>
<BBB>
<DDD>
<CCC>
<DDDD/>
<EEE/>
</CCC>
</DDD>
</BBB>
</AAA>