Considere este documento XML:
<foo>
<bar id="aaa"/>
<jam>
<bar id="bbb"/>
</jam>
</foo>
Estou tentando encontrar o primeiro <bar>
elemento no documento.
Aqui está o que descobri:
Teste# | Expressão XPath | Expressão de Avaliação | Resultado |
---|---|---|---|
1 | //bar |
@id |
aaa ,bbb |
2 | //bar[1] |
@id |
aaa ,bbb |
3 | (//bar)[1] |
@id |
aaa |
O que não entendo é por que o Teste nº 2 retorna aaa
, bbb
em vez de apenas aaa
. É como se a [1]
operadora não estivesse funcionando.
Meu entendimento foi que no Teste nº 2, a //bar
expressão encontraria os dois nós e então o [1]
operador escolheria o primeiro. Obviamente, estou faltando alguma coisa.
Isso parece ser confirmado pelo Teste nº 3, que aparentemente é como expressar o que eu realmente quero.
Além disso, se você alterar o documento XML para isto:
<foo>
<bar id="aaa"/>
<bar id="bbb"/>
</foo>
então você consegue o que eu esperava ver:
Teste# | Expressão XPath | Expressão de Avaliação | Resultado |
---|---|---|---|
1 | //bar |
@id |
aaa ,bbb |
2 | //bar[1] |
@id |
aaa |
3 | (//bar)[1] |
@id |
aaa |
Que sutileza estou faltando aqui sobre como [1]
deve funcionar?