XPath Sintaxis


XPath utiliza expresiones de ruta para seleccionar nodos o conjuntos de nodos en un documento XML. Los nodos se seleccionan siguiendo una ruta (path) o pasos (steps).


Documento de ejemplo XML

Usaremos este documento XML en los siguientes ejemplos.

Ejemplo

<?xml version="1.0" encoding="UTF-8"?> <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>


Seleccionar nodos

XPath utiliza expresiones de ruta para seleccionar nodos en un documento XML. Los nodos se seleccionan siguiendo una ruta o paso (step). A continuación se enumeran las expresiones de ruta más útiles:

Expresión Descripción
nodename Selecciona todos los nodos hijos de este nodo.
/ Selecciona desde el nodo raíz (toma los nodos hijos).
// Selecciona nodos del documento desde el nodo actual que coincide con la selección, sin tener en cuenta su posición (toma los nodos descendientes).
. Selecciona el nodo actual.
.. Selecciona el padre del nodo actual.
@ Selecciona atributos.

En la siguiente tabla, hemos enumerado algunas expresiones de ruta junto con sus resultados:

Expresión de ruta Resultado
bookstore Selecciona todos los nodos llamados bookstore.
/bookstore

Selecciona el elemento raíz bookstore.

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

bookstore/book Selecciona todos los elementos book que son hijos de bookstore.
//book Selecciona todos los elementos secundarios book, sin importar su posición en el documento.
bookstore//book Selecciona todos los elementos book que son descendientes del elemento bookstore, sin importar dónde se encuentren bajo bookstore.
//@lang Selecciona todos los atributos llamados lang.


Predicados

Los predicados se utilizan para buscar un nodo específico o un nodo que contenga un valor especificado.

Los predicados se colocan entre corchetes.

En la siguiente tabla, enumeramos algunas expresiones de ruta con predicados y sus resultados:

Expresión de ruta Resultado
/bookstore/book[1] Selecciona el primer elemento book que es hijo de bookstore.
/bookstore/book[last()] Selecciona el último elemento book que es hijo de bookstore.
/bookstore/book[last()-1] Selecciona el penúltimo elemento book que es hijo de bookstore.
/bookstore/book[position()<3] Selecciona los dos primeros elementos book que son hijos del elemento bookstore.
//title[@lang] Selecciona todos los elementos title que tienen un atributo llamado lang.
//title[@lang='eng'] Selecciona todos los elementos title que tienen un atributo lang con valor eng.
/bookstore/book[price>35.00] Selecciona todos los elementos book del elemento bookstore, donde el valor del elemento price sea mayor que 35.00.
/bookstore/book[price>35.00]//title Selecciona todos los elementos title de los elementos book del elemento bookstore, donde el valor del elemento price sea mayor que 35.00.


Seleccionar nodos desconocidos

Los comodines XPath se pueden utilizar para seleccionar elementos XML desconocidos.

Comodín Descripción
* Coincide con cualquier nodo de elemento.
@* Coincide con cualquier nodo de atributo.
node() Coincide con cualquier tipo de nodo.

En la siguiente tabla, enumeramos algunas expresiones de ruta y sus resultados:

Expresión de ruta Resultado
/bookstore/* Selecciona todos los elementos hijos del elemento bookstore.
//* Selecciona todos los elementos del documento.
//title[@*] Selecciona todos los elementos title que tienen atributos.


Seleccionar varias rutas

Mediante el uso del operador "|" en las expresiones de ruta, puede seleccionar varias rutas.

En la siguiente tabla, enumeramos algunas expresiones de ruta y sus resultados:

Expresión de ruta Resultado
//book/title | //book/price Selecciona todos los elementos title y price de los elementos book.
//title | //price Selecciona todos los elementos title y price del documento.
/bookstore/book/title | //price Selecciona todos los elementos title de los elementos book del elemento bookstore, así como todos los elementos price del documento.
Otras extensiones