2010-12-10 3 views
2

xsl:apply-templates select=".[nodeTest]" mode="somemode" échoue avec could not compile select expression.L'expression [nodeTest] ne fonctionne pas

J'ai relu le chapitre "Syntaxe abrégée" dans la spécification et je ne comprends toujours pas s'il s'agit d'un bogue d'implémentation ou d'un comportement approprié.

self::node[nodeTest] bien sûr fonctionne bien. Est-il d'une manière ou d'une autre spécifié que l'axe auto-raccourci ne devrait pas fonctionner avec le prédicat?

+0

Bonne question, +1. Voir ma réponse pour une explication complète. –

Répondre

2

est-il en quelque sorte précisé que l'axe auto raccourcies ne doivent pas travailler avec prédicat?

Oui, cela est déterminé par le grammar rules of XPath:

[20] FilterExpr ::= PrimaryExpr 
          | FilterExpr Predicate 


[15] PrimaryExpr ::= VariableReference 
           | '(' Expr ')' 
           | Literal 
           | Number 
           | FunctionCall 

Comme on le voit à partir de ceux-ci, PrimaryExpr ne peut pas être ..

Cette omission syntaxique a été corrigée dans XPath 2.0, où l'expression .[someCondition] est parfaitement légale.

+0

Ignorer mon commentaire précédent. Il a été publié avant votre modification. Merci d'avoir répondu. – Flack

+2

+1 Bonne réponse. Mais à des fins d'abréviation, cela pourrait être '(.) [$ Predicate]' –

+0

@Alejandro, bien sûr. –