2010-06-14 3 views
3

J'utilise CDATA pour échapper le script mais dans le débogueur de IE8 je reçois toujours ce message: "Expected ')" "dans les conditions de boucle for. Je suppose qu'il pense toujours que le; dans le < généré par CDATA se termine les conditions de boucle.Comment puis-je obtenir une moins de javascript pour une boucle dans XSL pour fonctionner?

Scénario original dans mon modèle XSL:

<script type="text/javascript" language="javascript"> 
<![CDATA[ 
    function submitform(form){ 
     var oErrorArray = new Array(); 
     for (i=0;i<form.length;i++) 
     eval("oErrorArray["+i+"]=oError"+i); 
     var goForm = true; 
     for(i=0;i<form.length;i++) { 
      oErrorArray[i].innerHTML = ""; 
      if(form[i].value="")){ 
       oErrorArray[i].innerHTML = "Error - input field is blank"; 
       goForm = false; 
      }   
     } 
     if(goForm == true) form.submit(); 
    } 
    function resetform(form){ 
     form.reset(); 
    } 
]]> 
</script> 

Le code généré après transformation (du débogueur IE8):

<script type="text/javascript" language="javascript"> 
    function submitform(form){ 
     var oErrorArray = new Array(); 
     for (i=0;i&lt;form.length;i++) 
     eval("oErrorArray["+i+"]=oError"+i); 
     goForm = true; 
     for(i=0;i&lt;form.length;i++) { 
      oErrorArray[i].innerHTML = ""; 
      if(form[i].value="")){ 
       oErrorArray[i].innerHTML = "Error - input field is blank"; 
       goForm = false; 
      }   
     } 
     if(goForm == true) form.submit(); 
    } 
    function resetform(form){ 
     form.reset(); 
    } 
</script> 

erreur signalée par débogueur IE8: attendu login ')'. xml, ligne 29 caractère 30(qui est juste après le premier "form.length")

+0

double possible [xslt, javascript et html entités unescaped] (http://stackoverflow.com/questions/435005/xslt-javascript-and-unescaped-html-entities) – Kobi

Répondre

2

Vous devez désactiver explicitement la sortie.

http://www.w3.org/TR/xslt#disable-output-escaping

+1

Merci! Cela a fonctionné parfaitement. Je viens de supprimer les balises CDATA et inséré " <" où j'ai eu besoin de moins de. – Kyle

+0

Je pense qu'il existe de meilleures solutions. – KooiInc

+0

cela fonctionne dans IE mais pas pour le chrome – shorif2000

Questions connexes