Comment sélectionner tous les nœuds feuilles en utilisant une expression XPath?

Je crois que c’est possible mais je ne pouvais pas comprendre la syntaxe. Quelque chose comme ça:

xmlNode.SelectNodes("//*[count(child::*) <= 1]") 

mais ce n’est pas correct.

Utiliser :

 //node()[not(node())] 

Dans le cas où seuls les nœuds d’extrémité des éléments sont recherchés (et cela nécessite des éclaircissements – les éléments qui ont des enfants autres qu’un élément sont-ils considérés comme des nœuds-feuilles?), L’expression XPath suivante les sélectionne:

 //*[not(*)] 

Les deux expressions ci-dessus sont probablement les plus courtes qui sélectionnent les nœuds souhaités (nœuds any-node ou element-leaf).

Tous les éléments sans élément enfant

 //*[not(child::*)] 

Pourquoi moins ou égal à 1?

xmlNode.SelectNodes("//*[count(child::*) = 0]")

Faites des tests sur ce site http://www.whitebeam.org/library/guide/TechNotes/xpathtestbed.rhtm

Assez utile ..

J’ajoute cette réponse à XSLT car il semble que les correspondances avant de Google manquent d’une telle solution:

Après une longue lutte pour extraire CDATA en XML, cette expression a finalement fonctionné le mieux pour moi: