Sintaxis XPath

XPath utiliza expresiones de ruta para seleccionar nodos o conjuntos de nodos en un documento XML. Los nodos se seleccionan mediante el seguimiento de una ruta (ruta) o pasos (pasos).

Documento de ejemplo XML

Usaremos este documento XML en los ejemplos siguientes.

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>

Seleccione nodo

XPath utiliza expresiones de ruta para seleccionar nodos en un documento XML. Los nodos se seleccionan mediante el seguimiento de una ruta o pasos.

A continuación, se enumeran las expresiones de ruta más útiles:

Expresión Descripción
nodename Seleccione todos los subnodos de este nodo.
/ Desde el nodo raíz.
// Desde el nodo seleccionado, seleccione nodos en el documento sin considerar su ubicación.
. Seleccione el nodo actual.
.. Seleccione el nodo padre del nodo actual.
@ Seleccione atributo.

Ejemplo

En la siguiente tabla, hemos enumerado algunos expresiones de ruta y sus resultados:

Expresiones de ruta Resultados
bookstore Seleccione todos los nodos hijos del elemento 'bookstore'.
/bookstore

Seleccione el elemento raíz 'bookstore'.

Nota: Si la ruta comienza con una barra invertida (\ /), esta ruta siempre representa una ruta absoluta a un elemento!

bookstore/book Seleccione todos los elementos 'book' que son subelementos del elemento 'bookstore'.
//book Seleccione todos los subelementos 'book', sin importar su ubicación en el documento.
bookstore//book Elija todos los elementos 'book' descendientes del elemento 'bookstore', sin importar su ubicación debajo de 'bookstore'.
//@lang Seleccione todas las propiedades con el nombre lang.

Predicados (Predicados)

Los predicados se utilizan para encontrar un nodo específico o un nodo que contiene un valor específico.

Los predicados se encierran en corchetes.

Ejemplo

A continuación, en la tabla, se enumeran algunas expresiones de ruta con predicados y los resultados de estas expresiones:

Expresiones de ruta Resultados
/bookstore/book[1] Seleccione el primer elemento de tipo book que es hijo del elemento bookstore.
/bookstore/book[last()] Seleccione el último elemento de tipo book que es hijo del elemento bookstore.
/bookstore/book[last()-1] Seleccione el segundo elemento de tipo book que es hijo del elemento bookstore, contando desde el último.
/bookstore/book[position()<3] Seleccione los dos primeros elementos de tipo book que son hijos del elemento bookstore.
//title[@lang] Seleccione todos los elementos de title que tengan el atributo lang.
//title[@lang='eng'] Seleccione todos los elementos de title que tengan el atributo lang con el valor eng.
/bookstore/book[price>35.00] Seleccione todos los elementos de book dentro del elemento bookstore, y el valor del elemento price debe ser mayor a 35.00.
/bookstore/book[price>35.00]/title Seleccione todos los elementos de title del elemento book dentro del elemento bookstore, y el valor del elemento price debe ser mayor a 35.00.

Seleccione nodos desconocidos

Los símbolos de comodín de XPath se pueden usar para seleccionar elementos XML desconocidos.

Símbolos de comodín Descripción
* Coincidir con cualquier nodo de elemento.
@* Coincidir con cualquier nodo de atributo.
node() Coincidir con cualquier tipo de nodo.

Ejemplo

A continuación, en la tabla, se enumeran algunas expresiones de ruta y los resultados de estas expresiones:

Expresiones de ruta Resultados
/bookstore/* Seleccione todos los elementos hijos del elemento bookstore.
//* Seleccione todos los elementos del documento.
//title[@*] Seleccione todos los elementos de title que tengan atributos.

Seleccione varias rutas

Al utilizar el operador "|" en la expresión de ruta, puede seleccionar varias rutas.

Ejemplo

A continuación, en la tabla, se enumeran algunas expresiones de ruta y los resultados de estas expresiones:

Expresiones de ruta Resultados
//book/title | //book/price Seleccione todos los elementos de title y price del elemento book.
//title | //price Seleccione todos los elementos title y price del documento.
/bookstore/book/title | //price Seleccione todos los elementos title que pertenecen a los elementos book del elemento bookstore, así como todos los elementos price del documento.