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 |