Ejemplo de XPath

Este tema revisa los ejemplos de sintaxis que aparecen a lo largo de la referencia XPath. Todos están basados en el Archivo de muestra XML para sintaxis XPath (inventory.xml). Para un ejemplo de cómo utilizar una expresión XPath en un archivo de prueba, consulte "Ejemplos de uniones (I)", en la parte de abajo de este tema.

Expresión Hace referencia a

./author

Todos los elementos <author> dentro del contexto actual. Tenga en cuenta que esto es equivalente a la expresión en la siguiente fila.

author

Todos los elementos <author> dentro del contexto actual.

first.name

Todos los elementos <first.name> dentro del contexto actual.

/bookstore

El elemento de documento (<bookstore>) de este documento.

//author

Todos los elementos <author> en el documento.

book[/bookstore/@specialty=@style]

Todos los elementos <book> cuyo valor de atributo style es igual al valor de atributo specialty del elemento <bookstore> en la raíz del documento.

author/first-name

Todos los elementos <first-name> que son secundarios de un elemento <author>.

bookstore//title

Todos los elementos <title> uno o más niveles dentro del elemento <bookstore> (descendientes arbitrarios). Tenga en cuenta que esto es diferente de la expresión en la siguiente fila.

bookstore/*/title

Todos los elementos <title> que son secundarios de los elementos <bookstore>.

bookstore//book/excerpt//emph

Todos los elementos <emph> en cualquier lugar dentro de los secundarios <excerpt> de los elementos <book>, en cualquier lugar dentro del elemento <bookstore>.

.//title

Todos los elementos <title> uno o más niveles dentro del contexto actual. Tenga en cuenta que esta situación es esencialmente la única en la que se requiere la notación de período.

author/*

Todos los elemento secundarios de los elementos <author>.

book/*/last-name

Todos los elementos <last-name> que son secundarios de los elementos <book>.

*/*

Todos los elementos secundarios de estos del contexto actual.

*[@specialty]

Todos los elementos con el atributo specialty.

@style

El atributo style del contexto actual.

price/@exchange

El atributo exchange en los elementos <price> dentro del contexto actual.

price/@exchange/total

Devuelve un conjunto de nodos vacío, porque los atributos no contienen secundarios de elementos. Esta expresión está permitida por la gramática del lenguaje de ruta XML (XPath), pero no es estrictamente válido.

book[@style]

Todos los elementos <book> con atributos style del contexto actual.

book/@style

El atributo style para todos los elementos <book> del contexto actual.

@*

Todos los atributos del contexto de elemento actual.

./first-name

Todos los elementos <first-name> en el nodo de contexto actual. Tenga en cuenta que esto es equivalente a la expresión en la siguiente fila.

first-name

Todos los elementos <first-name> en el nodo de contexto actual.

author[1]

El primer elemento <author> en el nodo de contexto actual.

author[first-name][3]

El tercer elemento <author> que tiene un secundario <first-name>.

my:book

El elemento <book> a partir del espacio de nombres my.

my:*

Todos los elementos a partir del espacio de nombres my.

@my:*

Todos los atributos del espacio de nombres my (esto no incluye atributos incompletos en elementos de espacio de nombres my).

Tenga en cuenta que los índices están relacionados con el primario. Considere los siguientes datos:

<x>
  <y/>
  <y/>
</x>
<x>
  <y/>
  <y/>
</x>

Expresión Hace referencia a

x/y[1]

El primer secundario <y> de cada <x>. Esto es equivalente a la expresión en la siguiente fila.

x/y[position() = 1]

El primer secundario <y> de cada <x>.

(x/y)[1]

El primer <y> de un conjunto entero de secundarios <y> de elementos <x>.

x[1]/y[2]

El segundo secundario <y> del primer <x>.

Los ejemplos que quedan se refieren al archivo de muestra XML para XPath.

Expresión Hace referencia a

book[last()]

El último elemento <book> del nodo de contexto actual.

book/author[last()]

El último secundario <author> de cada elemento <book> del nodo de contexto actual.

(book/author)[last()]

El último elemento <author> del conjunto entero de secundarios <author> de los elementos <book> del nodo de contexto actual.

book[excerpt]

Todos los elementos <book> que contienen al menos un elemento secundario <excerpt>.

book[excerpt]/title

Todos los elementos <title> secundarios de los elementos <book> que también contienen al menos un elemento secundario <excerpt>.

book[excerpt]/author[degree]

Todos los elementos <author> que contienen al menos un elemento secundario <degree>, y que son secundarios de elementos <book> que también contienen al menos un elemento <excerpt>.

book[author/degree]

Todos los elementos <book> que contienen secundarios <author> que a su vez contienen al menos un secundario <degree>.

author[degree][award]

Todos los elementos <author> que contienen al menos un elemento secundario <degree> y al menos un elemento secundario <award>.

author[degree and award]

Todos los elementos <author> que contienen al menos un elemento secundario <degree> y al menos un elemento secundario <award>.

author[(degree or award) and publication]

Todos los elementos <author> que contienen al menos un <degree> o <award> y al menos un <publication> como secundario

author[degree and not(publication)]

Todos los elementos <author> que contienen al menos un elemento secundario <degree> y que no contienen elementos secundarios <publication>.

author[not(degree or award) and publication]

Todos los elementos <author> que contienen al menos un elemento secundario <publication> y que no contienen elementos secundarios <degree> ni <award>.

author[last-name = "Bob"]

Todos los elementos <author> que contienen al menos un elemento secundario <last-name> con el valor Bob.

author[last-name[1] = "Bob"]

Todos los elementos <author> donde el primer elemento secundario <last-name> tiene el valor Bob. Tenga en cuenta que esto es equivalente a la expresión en la siguiente fila.

author[last-name [position()=1]= "Bob"]

Todos los elementos <author> donde el primer elemento secundario <last-name> tiene el valor Bob.

degree[@from != "Harvard"]

Todos los elementos <degree> donde el atributo from no es equivalente a "Harvard".

author[. = "Matthew Bob"]

Todos los elementos <author> cuyo valor es Matthew Bob.

author[last-name = "Bob" and ../price &gt; 50]

Todos los elementos <author> que contienen un elemento secundario <last-name> cuyo valor es Bob, y un elemento relacionado cuyo valor es mayor que 50 <price>.

book[position() &lt;= 3]

Los primeros tres libros (1, 2, 3).

author[not(last-name = "Bob")]

Todos los elementos <author> que no contienen elemento secundarios <last-name> con el valor Bob.

author[first-name = "Bob"]

Todos los elementos <author> que tienen al menos un elemento secundario <first-name> con el valor Bob.

author[* = "Bob"]

Todos los elementos de autor que contienen cualquier elemento secundario cuyo valor es Bob.

author[last-name = "Bob" and first-name = "Joe"]

Todos los elementos <author> que tienen un elemento secundario <last-name> con el valor Bob y un elemento secundario <first-name> con el valor Joe.

price[@intl = "Canada"]

Todos los elementos <price> en el nodo de contexto que tienen un atributo intl equivalente a "Canada".

degree[position() &lt; 3]

Los dos primeros elementos que son secundarios <degree> del nodo de contexto.

p/text()[2]

El segundo nodo de texto en cada elemento <p> en el nodo de contexto.

ancestor::book[1]

Los antecesores más próximos <book> del nodo de contexto.

ancestor::book[author][1]

El antecesor <book> más próximo del nodo de contexto y este elemento <book> tiene un elemento <author> como su secundario.

ancestor::author[parent::book][1]

El antecesor <author> más próximo en el contexto actual y este elemento <author> es un secundario de un <book>.

Ejemplo de uniones ( I )

Para demostrar la operación de unión, se utiliza la siguiente expresión XPath:

x | y/x

selecciona todos los elementos <x> cuyos valores son verde o azul en el siguiente archivo XML:

Archivo XML (data1.xml)

Archivo XSLT (union.xsl)

Resultado con formato

verde,azul,azul,verde

Resultado del procesador

<?xml version="1.0" encoding="UTF-16"?>green,blue,blue,green

Vea también

Referencia

Ejemplos de rutas de acceso de ubicación

Conceptos

Archivo de muestra XML para sintaxis XPath (inventory.xml)