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 elementolibreria | 
| //@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 tituloque tiene al menos un atributo de cualquier tipo. | 
Predicados
| Expresión XPath | Resultado | 
|---|---|
| /libreria/libro[1] | Selecciona el primer elemento libroque sea hijo de un elementolibreria. | 
| /libreria/libro[last()] | Selecciona el último elemento libroque sea hijo de un elementolibreria. | 
| /libreria/libro[last()-1] | Selecciona el penúltimo elemento libroque sea hijo de un elementolibreria. | 
| /libreria/libro[position()<3] | Selecciona los primeros dos elementos libroque sean hijos de un elementolibreria. | 
| //titulo[@idioma] | Selecciona todos los elementos tituloque tengan un atributoidioma. | 
| //titulo[@idioma='en'] | Selecciona todos los elementos titulocuyo atributoidiomatenga el valoren. | 
| /libreria/libro[precio>35.00] | Selecciona todos los elementos libroque sean hijos de un elementolibreriay que tengan un elementopreciocuyo valor sea mayor que35.00. | 
| /libreria/libro[precio>35.00]/titulo | Selecciona todos los elementos tituloque sean hijos de un elementolibroque tengan un elementopreciocuyo valor sea mayor que35.00. | 
Selección de varias rutas
| Expresión XPath | Resultado | 
|---|---|
| //libro/titulo | //libro/precio | Selecciona todos los elementos tituloypreciode todos los elementoslibro. | 
| //titulo | //precio | Selecciona todos los elementos tituloypreciodel documento. | 
| /libreria/libro/titulo | //precio | Selecciona todos los elementos tituloque tenga un elementolibroque esté dentro de un elementolibreriay todos los elementospreciodel 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 libroque son hijos del nodo actual. | 
| attribute::idioma | Selecciona todos los atributos idiomadel 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 libroque sean descendientes del nodo actual. | 
| ancestor::libro | Selecciona todos los nodos libroque sean ascendientes del nodo actual. | 
| ancestor-or-self::libro | Selecciona todos los ascendientes de tipo librodel nodo actual, incluido el nodo actual si este es de tipolibro. | 
| child::*/child::price | Seleccoina todos los elementos precioque sean hijos de los hijos del nodo actual. |