Sintaxis de XPath

XPath utiliza expresiones de ruta para seleccionar nodos o conjuntos de nodos en documentos 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="esp">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="esp">Aprender XML</title>
  <price>39.95</price>
</book>
</bookstore>

Selección de nodos

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

A continuación, se enumeran las expresiones de rutas 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 propiedades.

Ejemplo

A continuación, en la tabla, se enumeran algunas expresiones de rutas y sus resultados:

Expresión de ruta Resultados
bookstore Seleccione todos los nodos que sean subnodos del elemento bookstore.
/bookstore

Seleccione el elemento raíz bookstore.

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

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

Predicados (Predicados)

El predicado se utiliza para encontrar un nodo específico o un nodo que contiene un valor específico.

El predicado se encuentra entre corchetes.

Ejemplo

A continuación, en la tabla, se enumeran algunas expresiones de rutas con predicados y sus resultados:

Expresión de ruta Resultados
/bookstore/book[1] Seleccione el primer elemento de book que sea hijo del elemento bookstore.
/bookstore/book[last()] Seleccione el último elemento de book que sea hijo del elemento bookstore.
/bookstore/book[last()-1] Seleccione el segundo elemento de book que sea hijo del elemento bookstore, contando desde el final.
/bookstore/book[position()<3] Seleccione los dos primeros elementos de book que sean 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 Elegir todos los elementos title de los elementos book dentro del elemento bookstore, y el valor del elemento price debe ser mayor que 35.00.

Elegir nodos desconocidos

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

Símbolo 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, se listan algunas expresiones de ruta y los resultados de estas expresiones en la siguiente tabla:

Expresión de ruta Resultados
/bookstore/* Elegir todos los subelementos del elemento bookstore.
//* Elegir todos los elementos del documento.
//title[@*] Elegir todos los elementos title que tienen atributos.

Elegir varias rutas

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

Ejemplo

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

Expresión de ruta Resultados
//book/title | //book/price Elegir todos los elementos title y price de los elementos book.
//title | //price Elegir todos los elementos title y price del documento.
/bookstore/book/title | //price Elegir todos los elementos title que pertenecen a los elementos book del elemento bookstore, y todos los elementos price del documento.