Axes (Ejes) XPath

Documento de ejemplo de XML

Vamos a usar este documento XML en los siguientes ejemplos:

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>

  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>

  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>

eje de XPath

el eje puede definir un conjunto de nodos en relación con el nodo actual. resultado
nombre de eje ancestor
seleccionar todos los antepasados (padre, abuelo, etc.) del nodo actual. ancestor-or-self
seleccionar todos los antepasados (padre, abuelo, etc.) del nodo actual y el nodo actual en sí mismo. seleccionar todas las propiedades del nodo actual.
attribute seleccionar todos los elementos hijos del nodo actual.
child descendant
seleccionar todos los elementos descendientes del nodo actual (hijos, nietos, etc.). descendant-or-self
seleccionar todos los elementos descendientes del nodo actual (hijos, nietos, etc.) y el nodo actual en sí mismo. following
seleccionar todos los nodos después de la etiqueta de finalización del nodo actual en el documento. namespace
seleccionar todos los nodos de espacio de nombres del nodo actual. parent
seleccionar el nodo padre del nodo actual. preceding
seleccionar todos los nodos antes de la etiqueta de inicio del nodo actual en el documento. preceding-sibling
seleccionar todos los nodos同级antes del nodo actual. self

seleccionar el nodo actual.

expresión de la ruta de posición

la expresión de la ruta de posición puede ser absoluta o relativa.

la ruta de posición puede ser absoluta o relativa. La ruta de posición absoluta comienza con una barra invertida (/), mientras que la relativa no. En ambos casos, la ruta de posición incluye uno o más pasos, cada uno separado por una barra:

/step/step/...

ruta de posición relativa:

step/step/...

cada paso se calcula basándose en los nodos dentro del conjunto de nodos actual.

paso (step) incluye:

eje (axis)
definir la relación de árbol entre el nodo seleccionado y el nodo actual
prueba de nodo (node-test)
identificar los nodos dentro de un eje específico
cero o más predicados (predicate)
refinar más profundamente el conjunto de nodos seleccionados

sintaxis del paso:

nombre de eje::nodo prueba[predicado]

instancia

ejemplo resultado
child::book seleccionar todos los nodos book que pertenecen a los elementos hijos del nodo actual.
attribute::lang seleccionar la propiedad lang del nodo actual.
child::* seleccionar todos los elementos hijos del nodo actual.
attribute::* seleccionar todas las propiedades del nodo actual.
child::text() seleccionar todos los nodos de texto hijos del nodo actual.
child::node() seleccionar todos los nodos hijos del nodo actual.
descendant::book Seleccionar todos los descendientes book del nodo actual
ancestor::book Seleccionar todos los antepasados book del nodo actual
ancestor-or-self::book Seleccionar todos los antepasados book del nodo actual y el nodo actual (si este nodo es un nodo book)
child::*/child::price Seleccionar todos los nodos hijos price del nodo actual.