Buscar..


Observaciones

Una ruta de ubicación de XPath es una serie de pasos de ubicación separados por un carácter / :

step1/step2/step3

Un paso de ubicación contiene un eje , una prueba de nodo y una lista opcional de predicados . El eje y la prueba de nodo están separados por dos caracteres de dos puntos :: . Los predicados están encerrados entre corchetes:

axis::nodeTest[predicate1][predicate2]

La evaluación de una ruta de ubicación comienza con un conjunto de nodos que contiene el nodo de contexto dado por el contexto de la expresión, o el nodo raíz , si la ruta de ubicación comienza con un / . En cada paso, cada nodo N en el conjunto de nodos original se reemplaza con el conjunto de nodos que

  • Se puede llegar desde N siguiendo el eje dado,
  • coincide con la prueba de nodo , y
  • coincide con todos los predicados .

El resultado de una expresión de ruta de ubicación es el conjunto final de nodos obtenido después de procesar todos los pasos de ubicación .

Atravesando elementos infantiles

Recorrido desde el nodo raíz a un elemento descendiente utilizando el eje child :

/child::html/child::body/child::div/child::span

Dado que el eje child es el eje predeterminado, se puede abreviar como:

/html/body/div/span

Atravesando a todos los descendientes

Los ejes descendant y descendant-or-self pueden usarse para encontrar todos los elementos descendientes de un nodo a cualquier profundidad. En contraste, el eje child solo atraviesa niños inmediatos.

/child::html/descendant::span
/child::html/descendant-or-self::*

La barra doble // es un acceso directo para /descendant-or-self::node()/ . Entonces las siguientes expresiones son equivalentes:

table//td
child::table/descendant-or-self::node()/child::td
child::table/descendant::td
table/descendant::td

Travesía antepasados

El eje parent contiene solo el padre de un nodo. La siguiente expresión selecciona el elemento html tomando un desvío sobre el elemento del body :

/child::html/child::body/parent::html

.. es un acceso directo para parent::node()

Los ejes ancestor y ancestor-or-self atraviesan todos los antepasados ​​de un nodo. La siguiente expresión devuelve todos los elementos div que son ancestros del nodo de contexto:

ancestor::div

El eje "yo"

El eje self solo contiene el nodo de contexto. La expresión . es un acceso directo para self::node() y siempre coincide con el nodo de contexto. El . El acceso directo es útil para enumerar descendientes del nodo de contexto. Las siguientes expresiones son equivalentes:

.//span
self::node()/descendant-or-self::node()/child::span
descendant::span

El eje self puede ser útil en los predicados de XPath 1.0. Por ejemplo, para seleccionar todos los hijos h1 , h2 y h3 del nodo de contexto:

*[self::h1 or self::h2 or self::h3]

Atravesando nodos siguientes y anteriores

Los following-sibling ejes following-sibling y following-sibling preceding-sibling contienen los hermanos antes o después del nodo de contexto, y los ejes following y preceding contienen todos los nodos en el documento antes o después del nodo de contexto, pero:

  • Ninguno de estos ejes contiene atributos o nodos de espacio de nombres.
  • El following eje no contiene descendientes.
  • El eje preceding no contiene ningún ancestro.

Ejemplos:

following::span[1]
following-sibling::*[last()]

Atravesando nodos de atributo y espacio de nombres

Los ejes de attribute y namespace contienen todos los nodos de atributo y espacio de nombres de un elemento. El atajo @ representa attribute:: , por lo que los siguientes son equivalentes:

child::div/attribute::class
div/@class


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow