Alguém sabe como obter a posição de um nó usando o xpath?
Digamos que eu tenha o seguinte xml:
<a>
<b>zyx</b>
<b>wvu</b>
<b>tsr</b>
<b>qpo</b>
</a>
Posso usar a seguinte consulta xpath para selecionar o terceiro <b> nó (<b> tsr </b>):
a/b[.='tsr']
O que é muito bom, mas quero retornar a posição ordinal desse nó, algo como:
a/b[.='tsr']/position()
(mas um pouco mais de trabalho!)
É mesmo possível?
editar : Esqueci de mencionar que estou usando .net 2, então é xpath 1.0!
Atualização : Acabei usando a excelente resposta de James Sulak . Para aqueles que estão interessados, aqui está minha implementação em C #:
int position = doc.SelectNodes("a/b[.='tsr']/preceding-sibling::b").Count + 1;
// Check the node actually exists
if (position > 1 || doc.SelectSingleNode("a/b[.='tsr']") != null)
{
Console.WriteLine("Found at position = {0}", position);
}