2010-04-21 4 views
1

J'essaie d'utiliser des classes en XSL (la balise 'msxsl: script'). Mais j'obtiens le message 'Erreur de syntaxe' lors du débogage du fichier. Voici un code simple que j'utilise:XSLT + JavaScript: en utilisant les classes

function Test1(str) 
{ 
    this.str = str; 
} 

Test1.prototype.getStr = function() 
{ 
    return this.str; 
} 

function test() 
{ 
    var newTest1 = new Test1("some string"); 
    return (newTest1.getStr()); 
} 

Si j'insère le code dans un fichier ASPX et appeler la fonction de test, tout fonctionne bien, sans aucun message d'erreur. Est-il possible d'utiliser des classes en XSL?

+1

Pouvez-vous s'il vous plaît publier le XSLT que vous utilisez actuellement. Je pense que l'erreur de syntaxe n'a rien à voir avec votre utilisation des classes. – Tomalak

+0

En fait, tout va bien avec mon fichier XSL. Je peux l'exécuter sans aucun problème (sans le script). Après avoir inséré le script j'ai eu l'erreur de syntaxe sur cette ligne: Test1.prototype.getStr = function() Tout le code se trouve dans msxsl: script. J'ai également inséré CDATA. – Tanya

+0

Avez-vous inséré des caractères CDATA * et * d'échappement «<', '>» et «&» dans le script? Un seul est nécessaire - CDATA * ou * s'échapper. – Tomalak

Répondre

0

Il semble qu'il existe des restrictions étranges sur ce que vous pouvez utiliser au niveau supérieur des blocs de script, et qu'ils ne permettent pas l'utilisation de this dans les fonctions de niveau supérieur. Cependant, si vous allez un peu plus loin, certaines de ces restrictions disparaissent:

function MakeTest1() 
{ 
    function inner(s) 
    { 
     this.str = s; 
    } 

    inner.prototype.getStr = function() 
    { 
     return this.str; 
    } 

    return inner; 
} 
var Test1 = MakeTest1(); 

function test() 
{ 
    var newTest1 = new Test1("some string"); 
    return (newTest1.getStr()); 
}