Je sais que c'est une question simple, mais je ne peux pas le comprendre. Considérez le document XML simple suivant:
<root>
<a></a>
<b></b>
<c></c>
<a></a>
<d></d>
<e></e>
<a></a>
<a></a>
</root>
Quelle est la meilleure façon de sélectionner les nœuds <b>
à travers <e>
en utilisant XPath?
Je cherche quelque chose comme
/root/*[not(a)]
(ce qui ne fait pas l'affaire)
/root/*[not(self::a)]
Répondre à ajouter que dans XPath 2.0, vous pouvez utiliser except
:
/root/(* except a)
Pour XPath 1.0, a souligné Tomalak, c'est la manière standard de le faire:
/root/*[not(self::a)]
Soit dit en passant, si quelqu'un atterrit ici en essayant de l'utiliser dans XSLT 2.0 dans un xsl:template/@match
attribut cela ne fonctionnera pas car @match
prend des modèles qui bien que look comme les expressions XPath, soient pas les expressions XPath. La solution pour XPath 1.0 fonctionnerait dans ce cas.
Je me rends compte que c'est une vieille question, mais j'ai récemment rencontré un problème similaire et utilisé le xpath suivant pour le résoudre:
/root/*[not(name()='a')]