2010-04-21 7 views

Répondre

7

En supposant ce que vous voulez est le nœud de texte ne contenant pas le texte des espaces:

//fieldset/text()[normalize-space(.)] 

Si ce que vous voulez est le dernier nœud de texte, puis:

//fieldset/text()[last()] 
+0

Le '.' est optionnel pour' normalize-space() ', quand aucun argument ne le fait fonctionner sur le noeud contextuel. – Tomalak

7

Je vous recommande d'accepter Steven D. La réponse de Majewski, mais voici l'explication (nœuds de texte mis en évidence avec des crochets):

<fieldset>[ 
    ]<legend>My Legend</legend>[ 
    ]<p>Some text</p>[ 
    Text to capture 
]</fieldset> 

si /fieldset/text() retourne

  • "\n "
  • "\n "
  • "\n Text to capture\n"

Et ceci est la raison pour laquelle vous voulez /fieldset/text()[normalize-space()], et que vous voulez le résultat coupé avant utilisation.

Notez également que ce qui précède est court pour /fieldset/text()[normalize-space(.) != '']. Lorsque normalize-space() renvoie une chaîne non vide, le prédicat est évalué à true, tandis que la chaîne vide est évaluée à false.

Questions connexes