Resumen XPath
Selección de nodos
Expresión | Descripción |
---|---|
nombre_nodo | Selecciona todos los nodos que se llamen nombre_nodo . |
/ | Selecciona el nodo raíz. Es el comienzo de las rutas absolutas. |
// | Selecciona los nodos descendientes. |
. | Selecciona el nodo actual. |
.. | Selecciona el nodo padre del nodo actual. |
@ | Selecciona atributos. |
A continuación, tomaremos el siguiente XML para los diferentes ejemplos
<?xml version="1.0" encoding="UTF-8"?>
<libreria>
<libro>
<titulo idioma="en">Harry Potter</titulo>
<precio>29.99</precio>
</libro>
<libro>
<titulo idioma="en">Learning XML</titulo>
<precio>39.95</precio>
</libro>
</libreria>
Expresión XPath | Resultado |
---|---|
libreria | Selecciona todos los nodos que se llamen <libreria> |
/libreria | Selecciona el nodo raíz <libreria> |
libreria/libro | Selecciona todos los elementos <libro> que son hijo de un elemento <libreria> |
//libro | Selecciona todos los elementos <libro> independientemente de donde estén situados en el documento |
libreria//libro | Selecciona todos los elementos <libro> que sean descendiente de un elemento <libreria> , independientemente de donde estén anidados dentro del elemento libreria |
//@idioma | Selecciona todos los atributos que se llamen idioma |
Selección de nodos desconocidos
Máscara | Descripción |
---|---|
* | Hace referencia a cualquier nodo. |
@* | Hace referencia a cualquier atributo. |
node() | Hace referencia a cualquier nodo independientemente del tipo de nodo. |
Expresión XPath | Resultado |
---|---|
/libreria/* | Selecciona todos los nodos hijo del elemento libreria . |
//* | Selecciona todos los elementos del documento. |
//titulo[@*] | Selecciona todos los elementos titulo que tiene al menos un atributo de cualquier tipo. |
Predicados
Expresión XPath | Resultado |
---|---|
/libreria/libro[1] | Selecciona el primer elemento libro que sea hijo de un elemento libreria . |
/libreria/libro[last()] | Selecciona el último elemento libro que sea hijo de un elemento libreria . |
/libreria/libro[last()-1] | Selecciona el penúltimo elemento libro que sea hijo de un elemento libreria . |
/libreria/libro[position()<3] | Selecciona los primeros dos elementos libro que sean hijos de un elemento libreria . |
//titulo[@idioma] | Selecciona todos los elementos titulo que tengan un atributo idioma . |
//titulo[@idioma='en'] | Selecciona todos los elementos titulo cuyo atributo idioma tenga el valor en . |
/libreria/libro[precio>35.00] | Selecciona todos los elementos libro que sean hijos de un elemento libreria y que tengan un elemento precio cuyo valor sea mayor que 35.00 . |
/libreria/libro[precio>35.00]/titulo | Selecciona todos los elementos titulo que sean hijos de un elemento libro que tengan un elemento precio cuyo valor sea mayor que 35.00 . |
Selección de varias rutas
Expresión XPath | Resultado |
---|---|
//libro/titulo | //libro/precio | Selecciona todos los elementos titulo y precio de todos los elementos libro . |
//titulo | //precio | Selecciona todos los elementos titulo y precio del documento. |
/libreria/libro/titulo | //precio | Selecciona todos los elementos titulo que tenga un elemento libro que esté dentro de un elemento libreria y todos los elementos precio del documento. |
Relaciones entre nodos
Relación | Resultado |
---|---|
ancestor | Selecciona todos los ancestros (padres, abuelos, etc.) del nodo actual. |
ancestor-or-self | Selecciona todos los ancestros (padres, abuelos, etc) del nodo actual y el mismo. |
attribute | Selecciona todos los atributos del nodos actual. |
child | Selecciona todos los hijos del nodo actual. |
descendant | Selecciona todos los descendientes (hijos y hijos de hijos, etc.) del nodo actual. |
descendant-or-self | Selecciona todos los descendientes (hijos y hijos de hijos, etc.) del nodo actual y el mismo nodo. |
following | Selecciona todo en el documento después de la etiqueta de cierre del nodo actual. |
following-sibling | Selecciona todos los hermanos del nodo actual. |
namespace | Selecciona todos los nodos que sean espacio de nombre. |
parent | Selecciona todos los padres del nodo actual. |
preceding | Selecciona todos los nodos que aparecen antes de nodo actual en el documento, excepto los ancestros, los nodos de atributos y los nodos de espacios de nombres. |
preceding-sibling | Selecciona todos los hermanos del nodo actual. |
self | Selecciona el nodo actual. |
A continuación, algunos ejemplos del uso de estas relaciones:
Ejemplo | Resultado |
---|---|
child::libro | Selecciona todos los nodos libro que son hijos del nodo actual. |
attribute::idioma | Selecciona todos los atributos idioma del nodo actual. |
child::* | Selecciona todos los elementos hijos del nodo actual. |
attribute::* | Selecciona todos los atributos del nodo actual. |
child::text() | Selecciona todos los nodos de texto del nodo actual. |
child::node() | Selecciona todos los hijos del nodo actual. |
descendant::libro | Selecciona todos los elementos libro que sean descendientes del nodo actual. |
ancestor::libro | Selecciona todos los nodos libro que sean ascendientes del nodo actual. |
ancestor-or-self::libro | Selecciona todos los ascendientes de tipo libro del nodo actual, incluido el nodo actual si este es de tipo libro . |
child::*/child::price | Seleccoina todos los elementos precio que sean hijos de los hijos del nodo actual. |