<a>
<b/>
<c/>
<d/>
<b/>
<e/>
</a>
Comment sélectionner les enfants de «a» qui ne sont pas «b»?XPath: sélectionnez les éléments enfants qui n'ont * pas * de nom spécifique
<a>
<b/>
<c/>
<d/>
<b/>
<e/>
</a>
Comment sélectionner les enfants de «a» qui ne sont pas «b»?XPath: sélectionnez les éléments enfants qui n'ont * pas * de nom spécifique
/a/*[not(self::b)]
Xpath regardera:
a/*[name(.) !='b']
Ainsi, les enfants choisis de 'a' dont le nom est égal 'b'
Cela se casse quand les espaces de noms et les préfixes sont utilisés. – Lucero
@Lucero - selon la source XML il n'y a pas d'espace de nommage, mais si oui vous avez la fonction "nom-local" – Dewfy
oui, et local-name() aussi parce qu'il va correspondre à des éléments de n'importe quel nom d'élément. Puisque les exemples publiés ici sont souvent simplifiés (assez évidents ici), je ne serais pas sûr qu'aucun espace de noms ne sera utilisé, et même si quelqu'un googles et trouve cette réponse, il devrait savoir que votre solution ne fonctionne pas avec les espaces de noms. – Lucero
Avec XPath 2.0, vous pouvez même faire
+1 pour l'utilisation de l'axe 'self';) – Lucero
@Lucero: Je dois @Tomalak pour cette idée :) – AakashM
Merci pour le crédit. :) – Tomalak