Erreur Xpath avec pas() et se termine avec()

J'ai l'expression Xpath suivante:

//*[not(input)][ends-with(@*, 'Copyright')]

Je l'attends pour me donner tous les éléments - à l'exception de l'entrée - avec toute valeur d'attribut qui se termine par "droit d'Auteur".

Je l'exécuter dans le Sélénium 2 API Java avec webDriver.findElements(By.xpath(expression)) et obtenez l'erreur suivante:

L'expression n'est pas un
expression

Mais ces expressions fonctionnent sans problème:

//*[not(input)][starts-with(@*, 'Copyright')]
//*[ends-with(@*, 'Copyright')]

Des idées?

Je ne sais pas Sélénium, mais si //*[not(input)][starts-with(@*, 'Copyright')] est analysé avec succès et si en plus, le XPath 2.0 fonction ends-with est pris en charge, alors je ne vois pas pourquoi //*[not(input)][ends-with(@*, 'Copyright')] n'est pas accepté comme une expression juridique. Votre description verbale toutefois semble que si vous voulez //*[not(self::input)][@*[ends-with(., 'Copyright')]].
Merci pour votre commentaire. Quelle est la différence entre //*[not(self::input)][@*[ends-with(., 'Copyright')]] et //*[not(input)][ends-with(@*, 'Copyright')]?
//*[not(input)] permet de sélectionner tous les éléments n'ayant pas eu de input élément enfant tout en //*[not(self::input)] permet de sélectionner tous les éléments qui ne sont pas eux-mêmes input éléments. Comme pour la comparaison de [@*[ends-with(., 'Copyright')]] avec ce que vous avez, ma suggestion est vrai tant qu'il n'y a aucun nœud d'attribut qui se termine par le droit d'Auteur, tandis que votre test ne fonctionne que si il y a un attribut unique qui se termine par "droit d'Auteur", comme se termine-avec (w3.org/TR/xquery-operators/#func-ends-with) permettent une séquence avec un seul élément comme premier argument ou une séquence vide, mais pas plusieurs éléments.
Merci beaucoup, je vais essayer cela. Vous pouvez créer une réponse afin que je puisse marquer comme la solution si cela fonctionne.
Bonne question, +1. Voir ma réponse pour l'analyse et l'explication des problèmes avec votre expression XPath. Suite à cela, un complet de XPath 1.0 et XPath 2.0 solutions sont présentées.

OriginalL'auteur Alp | 2011-05-29