Disons que j'ai ce document.Comment sélectionner les éléments correspondants les moins profonds avec XPath?
<a:Root>
<a:A>
<title><a:B/></title>
<a:C>
<item><a:D/></item>
</a:C>
</a:A>
</a:Root>
et moi avons un XmlNode fixé à l'élément <a:A>
.
Si je dis
A.SelectNodes("//a:*", namespaceManager)
Je reçois B
, C
et D
. Mais je ne veux pas D
car il est imbriqué dans un autre élément "a:".
Si je dis
A.SelectNodes("//a:*[not(ancestor::a:*)]", namespaceManager)
bien sûr, je reçois rien, puisque A et son parent sont dans l'espace "a".
Comment puis-je sélectionner seulement B
et C
, c'est-à-dire les enfants les moins profonds correspondant à l'espace de noms?
Merci. Remarque: il s'agit de XPath 1.0 (.NET 2). Je ne peux donc pas utiliser les préfixes dans le champ d'application (ce qui semble utile).
En outre, ce n'est pas vraiment une question sur les espaces de noms. Le dilemme serait le même avec d'autres critères correspondants.
Bonne question (1). Voir ma réponse pour la seule solution pure XPath 1.0 jusqu'à présent. :) –