Los últimos tutoriales de desarrollo web
 

Los ejes de XPath


El Ejemplo de documento XML

Vamos a utilizar el siguiente documento XML en los ejemplos siguientes.

<?xml version="1.0" encoding="UTF-8"?>

<bookstore>

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

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

</bookstore>

Los ejes de XPath

Un eje define un pariente conjunto de nodos al nodo actual.

AxisName Resultado
antepasado Selecciona todos los antepasados (parent, grandparent, etc.) del nodo actual
ancestro-or-self Selecciona todos los antepasados (parent, grandparent, etc.) del nodo actual y el propio nodo actual
atributo Selecciona todos los atributos del nodo actual
niño Selecciona todos los hijos del nodo actual
descendiente Selecciona todos los descendientes (children, grandchildren, etc.) del nodo actual
descendiente-or-self Selecciona todos los descendientes (children, grandchildren, etc.) del nodo actual y el propio nodo actual
siguiendo Selecciona todo en el documento después de la etiqueta de cierre del nodo actual
following-sibling Selecciona todos los hermanos después de que el nodo actual
espacio de nombres Selecciona todos los nodos de espacio de nombres del nodo actual
padre Selecciona el padre del nodo actual
anterior Selecciona todos los nodos que aparecen antes del nodo actual en el documento, excepto antepasados, atribuyen los nodos y los nodos de espacio de nombres
anterior-hermano Selecciona todos los hermanos antes de que el nodo actual
yo Selecciona el nodo actual

Ubicación expresión de ruta

Una ruta de ubicación puede ser absoluta o relativa.

Un camino de localización absoluta comienza con una barra ( / ) y un camino de localización relativo no lo hace. En ambos casos la vía de ubicación consta de uno o más pasos, cada uno separado por una barra oblicua:

An absolute location path:

/step/step/...

A relative location path:

step/step/...

Cada paso se evalúa contra los nodos en el actual conjunto de nodos.

Un paso consiste en:

  • un eje (defines the tree-relationship between the selected nodes and the current node)
  • un nodo-test (identifies a node within an axis)
  • cero o más predicados (to further refine the selected node-set)

La sintaxis para un paso de localización es:

axisname::nodetest[predicate]

Ejemplos

Ejemplo Resultado
child :: libro Selecciona todos los nodos de libros que son hijos del nodo actual
atribuir :: lang Selecciona el lang atributo del nodo actual
niño::* Selecciona todos los elementos hijos del nodo actual
atributo::* Selecciona todos los atributos del nodo actual
child :: text() Selecciona todos los hijos del nodo de texto del nodo actual
child :: node() Selecciona todos los hijos del nodo actual
descendiente :: libro Selecciona todos los descendientes del libro del nodo actual
ancestro :: libro Selecciona todos los antepasados ​​del libro del nodo actual
ancestro-o-self :: libro Selecciona todos los antepasados ​​del libro del nodo actual - y el actual, así si es un nodo de libro
child :: * / child :: precio Selecciona todos los nietos de los precios del nodo actual