Gostaria de extrair os nós de texto que estão logo antes da tag de fechamento dos a
elementos. Por exemplo, com este XML de exemplo:
<root>
<a/>
<a>1</a>
<a>2<b/>3</a>
<a>4<b/></a>
<a><b/>5<c/></a>
</root>
O resultado esperado seria a sequência( 1, 3 )
A expressão //a/text()[last()]
não é suficiente, pois ela retorna ( 1, 3, 4, 5 )
, e o problema é que não vejo como adicionar a restrição: " logo antes da tag de fechamento dea
".
Experimente isto
Ele seleciona nós de texto diretamente antes da
</a>
tag de fechamento.No seu exemplo, ele retorna
1, 3
.Ao usar,
//a/text()[last()]
você está apenas olhando para os nós de texto filhos de cadaa
elemento, pegando olast()
nó de texto sem considerar sua relação com quaisquer nós irmãos que possam estar ao redor dele.O seguinte pegará o
a
último filho de cada elemento, independentemente do seu tipo, e o retornará somente se for realmente um nó de texto://a/node()[last()][self::text()]
Ele retornará
1, 3
no seu exemplo.