<bookstore>
<book location="US">A1</book>
<category>
<book location="US">B1</book>
<book location="FIN">B2</book>
</category>
<section>
<book location="FIN">C1</book>
<book location="US">C2</book>
</section>
</bookstore>
Por lo tanto, dado lo anterior; Puede seleccionar el primer libro con
(//book[@location='US'])[1]
Y este encontrará el primero en cualquier lugar que tenga una ubicación en EE. UU. [A1]
//book[@location='US']
Devolvería el conjunto de nodos con todos los libros con ubicación EE. UU. [A1, B1, C2]
(//category/book[@location='US'])[1]
devolvería la primera ubicación de libros de Estados Unidos que existe en una categoría en cualquier parte del documento. [B1]
(/bookstore//book[@location='US'])[1]
devolverá el primer libro con la ubicación de Estados Unidos que existe en cualquier lugar bajo el elemento raíz librería; haciendo que la/librería sea redundante en realidad. [A1]
En respuesta directa:
/bookstore/book[@location='US'][1]
le devolverá el primer nodo de elemento de libro con la ubicación de Estados Unidos que se encuentra en la librería [A1]
Por cierto si usted quiere, en este ejemplo para encuentre el primer libro de EE. UU. que no fue un hijo directo de la librería:
(/bookstore/*//book[@location='US'])[1]
¿Cómo podría hacer lo mismo para // bookstore/book [@ location = 'US']? –
Esto obtendrá todos los libros de 'EE. UU.' (/ bookstore/book [@ location = 'US']) [1] obtendrá el primero. –
@KevinDriedger '/ bookstore/book [@ location = 'US'] [1]' no devuelve todos los libros de 'US'. Lo he probado varias veces y bajo diferentes idiomas 'implementaciones xpath. '/ bookstore/book [@ location = 'US'] [1]' devuelve el primer libro 'US' en una librería. Si hay varias librerías, devolverá la primera de cada una. Esto es lo que pidió el OP (el primer nodo en la librería). Su versión devuelve solo un libro de todas las librerías (la primera coincidencia). –