2010-01-28 7 views

Répondre

81

/a/*[not(self::b)]

+2

+1 pour l'utilisation de l'axe 'self';) – Lucero

+2

@Lucero: Je dois @Tomalak pour cette idée :) – AakashM

+0

Merci pour le crédit. :) – Tomalak

1

Xpath regardera:

a/*[name(.) !='b'] 

Ainsi, les enfants choisis de 'a' dont le nom est égal 'b'

+3

Cela se casse quand les espaces de noms et les préfixes sont utilisés. – Lucero

+0

@Lucero - selon la source XML il n'y a pas d'espace de nommage, mais si oui vous avez la fonction "nom-local" – Dewfy

+2

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

9

Avec XPath 2.0, vous pouvez même faire

Questions connexes