Saltar al contenido principal

Resumen XPath

Selección de nodos

ExpresiónDescripción
nombre_nodoSelecciona 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 XPathResultado
libreriaSelecciona todos los nodos que se llamen <libreria>
/libreriaSelecciona el nodo raíz <libreria>
libreria/libroSelecciona todos los elementos <libro> que son hijo de un elemento <libreria>
//libroSelecciona todos los elementos <libro> independientemente de donde estén situados en el documento
libreria//libroSelecciona todos los elementos <libro> que sean descendiente de un elemento <libreria>, independientemente de donde estén anidados dentro del elemento libreria
//@idiomaSelecciona todos los atributos que se llamen idioma

Selección de nodos desconocidos

MáscaraDescripción
*Hace referencia a cualquier nodo.
@*Hace referencia a cualquier atributo.
node()Hace referencia a cualquier nodo independientemente del tipo de nodo.
Expresión XPathResultado
/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 XPathResultado
/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]/tituloSelecciona 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 XPathResultado
//libro/titulo | //libro/precioSelecciona todos los elementos titulo y precio de todos los elementos libro.
//titulo | //precioSelecciona todos los elementos titulo y precio del documento.
/libreria/libro/titulo | //precioSelecciona 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ónResultado
ancestorSelecciona todos los ancestros (padres, abuelos, etc.) del nodo actual.
ancestor-or-selfSelecciona todos los ancestros (padres, abuelos, etc) del nodo actual y el mismo.
attributeSelecciona todos los atributos del nodos actual.
childSelecciona todos los hijos del nodo actual.
descendantSelecciona todos los descendientes (hijos y hijos de hijos, etc.) del nodo actual.
descendant-or-selfSelecciona todos los descendientes (hijos y hijos de hijos, etc.) del nodo actual y el mismo nodo.
followingSelecciona todo en el documento después de la etiqueta de cierre del nodo actual.
following-siblingSelecciona todos los hermanos del nodo actual.
namespaceSelecciona todos los nodos que sean espacio de nombre.
parentSelecciona todos los padres del nodo actual.
precedingSelecciona 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-siblingSelecciona todos los hermanos del nodo actual.
selfSelecciona el nodo actual.

A continuación, algunos ejemplos del uso de estas relaciones:

EjemploResultado
child::libroSelecciona todos los nodos libro que son hijos del nodo actual.
attribute::idiomaSelecciona 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::libroSelecciona todos los elementos libro que sean descendientes del nodo actual.
ancestor::libroSelecciona todos los nodos libro que sean ascendientes del nodo actual.
ancestor-or-self::libroSelecciona todos los ascendientes de tipo libro del nodo actual, incluido el nodo actual si este es de tipo libro.
child::*/child::priceSeleccoina todos los elementos precio que sean hijos de los hijos del nodo actual.