2 votes

Xpath : Première lettre/chaîne immédiatement après l'élément

Je dispose des possibilités XML suivantes:

. bla.
. bla.
bla.

Je veux obtenir le premier "." Donc j'ai essayé:

starts-with(metamark[not(descendant::text())]/following-sibling::text()[1],'.')

Fonctionne bien pour la ligne 2 ci-dessus mais je manque la ligne 1. Donc j'ai fait:

starts-with(metamark[not(descendant::text())]/following-sibling::text()[1],'.') or starts-with(metamark[not(descendant::text())]/following-sibling::*[1]/text()[1],'.')

qui fonctionne maintenant pour toutes les lignes ci-dessus. Cependant, la ligne 3 ne devrait pas être vraie, car je veux seulement les "." qui suivent immédiatement le vide ou la première chaîne du sibling qui suit immédiatement, MAIS pas s'il y a du texte dans un élément descendant de ce sibling avant le "."

Donc en termes simples: le premier texte (comme le plus proche du fermoir ">" réel après un élément. Comment pourrais-je accomplir cela?

2voto

Tomalak Points 150423

Que diriez-vous de : "Le premier nœud texte qui suit un tant qu'il commence par '.'"

//metamark[not(descendant::text())]/following::text()[1][starts-with(., '.')]

Dans

  . yes1bla. no1
  . yes2 bla. no2
  bla. no3

cela retrouve

'. yes1'
'. yes2'

L'axe following:: ignore l'imbrication, ce qui est utile pour cette tâche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X