Javascript dans un XSL, mozilla ignore <xsl:comment><![CDATA[ ?

Javascript dans un XSL, mozilla ignore <xsl:comment><![CDATA[ ? - XML/XSL - Programmation

Marsh Posté le 10-02-2004 à 22:45:54    

Salut,
Lorsque l'on souhaite mettre un morceau de code javascript dans une feuille xsl, il faut prendre soin de mettre
<script type="text/javascript">
<xsl:comment><![CDATA[
 
/*code*/
 
]]></xsl:comment>
</script>
 
pour pouvoir écrire des < (inférieur).
Seulement sous IE pas de problème, mais mozilla ne semble pas exécuter le code entre <xsl:comment... , pourquoi donc ? COmment y remédier ?
Je ne peux pas mettre tout dans un fichier .js externe car je me sert de xsl dans mon script, au début, pour créer un array. ensuite je veux l'initialiser avec un for et c'est la que j'ai besoin de comment...
merci
   ANT

Reply

Marsh Posté le 10-02-2004 à 22:45:54   

Reply

Marsh Posté le 10-02-2004 à 22:50:20    

heu <xsl:comment> ça veut dire qu'au niveau du XML c'est un commentaire, c'est bizarre, non ? :??:
Y a déjà le CDATA pour éviter les caractères spéciaux et le <script> au niveau HTML...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 10-02-2004 à 22:55:05    

oui mais il faut les deux, c'est sur, j'ai lu quelques trucs sur le sujet et puis si tu les mets pas tu as une erreur de parsing (avec ie notamment)

Reply

Marsh Posté le 11-02-2004 à 00:00:50    

De toute facon, mozilla n'etant plus dévellopé, passes a firefox.
ton <xsl:comment>...</xsl:comment> c'est dans une feuille de style xslt. faudrait qu'on l'aie sous la main pour voir ce qui va pas. Tu as la feuille de style et un exemple de xml l'utilisant, en ligne qque part??
 
Si ton pb est juste d'ecrire des < et > pour ton script, la solution connue est la suivante:
<script type="text/javascript">  
<xsl:text disable-output-escaping='yes'>
et ici, tu met ton script, avec &lt; pour < et &gt; pour > (et &amp;&amp; pour && )
et en sortie de la transfo xslt, ca sera OK.
</xsl:text></script>
 
Un exemple tout con pour te montrer que ca marche (exemple pas parfait car torché en 5 mn):
test.xml

Code :
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <?xml-stylesheet href="test.xsl" type="text/xsl" ?>
  3. <HTML>
  4. <BODY onLoad="timerONE=window.setTimeout('scroll(100)',500);">
  5. <H1>Test</H1>
  6. </BODY>
  7. </HTML>

(pris un fichier HTML declare comme du xml afin de pouvoir appeller onLoad)
test.xsl

Code :
  1. <?xml version="1.0"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3. <xsl:output method="html"/>
  4. <xsl:template match="node() | @*">
  5. <xsl:copy>
  6. <xsl:apply-templates select="@* | node()"/>
  7. </xsl:copy>
  8. </xsl:template>
  9. <xsl:template match="/HTML">
  10. <HTML>
  11. <HEAD>
  12. <SCRIPT type="text/javascript">
  13. <xsl:text disable-output-escaping='yes'>
  14. function scroll(seed) {
  15.       var msg  = "Look at me go! I'm scrolling!";
  16.       var out   = " "
  17.       var i     = 1
  18.       if (seed &gt; 100) {
  19.            seed--;
  20.            var cmd  = "scroll(" + seed + " )";
  21.            timerTwo = window.setTimeout(cmd,100);
  22.       }
  23.       else if (seed &lt;= 100 &amp;&amp; seed &gt; 0) {
  24.            for (i = 0 ; i &lt; seed ; i++) {
  25.                  out += " ";
  26.            }
  27.            out += msg;
  28.            seed--;
  29.            var cmd = "scroll(" + seed + " )";
  30.            window.status=out;
  31.            timerTwo=window.setTimeout(cmd,100);
  32.       }
  33.       else if (seed &lt;= 0) {
  34.            if (-seed &lt; msg.length) {
  35.                  out += msg.substring(-seed,msg.length);
  36.                  seed--;
  37.                  var cmd="scroll(" + seed + " )";
  38.                  window.status=out;
  39.                  timerTwo=window.setTimeout(cmd,100);
  40.            }
  41.            else {
  42.                  window.status=" ";
  43.                  timerTwo=window.setTimeout("scroll(100)",75);
  44.            }
  45.       }
  46.    }
  47. </xsl:text></SCRIPT>
  48. </HEAD>
  49. <xsl:apply-templates/>
  50. </HTML>
  51. </xsl:template>
  52. </xsl:stylesheet>


Sous IE tu verras le script s'executer.  
Sous Mozilla (j'ai teste avec firefox en fait),ca marche aussi. Tu vois d'ailleurs le script avec le DOM Inspector. A toi donc d'adapter a ton pb.
A+,


Message édité par gilou le 11-02-2004 à 01:00:32

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 11-02-2004 à 00:01:48    

gilou a écrit :

De toute facon, mozilla n'etant plus dévellopé, passes a firefox.


 
:heink: la 1.6 est sortie récemment et firefox utilise le même moteur (c'est lui qui suit Mozilla et non l'inverse)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 11-02-2004 à 00:12:48    

Euh oui, scuse! J'ai lu Mozilla, et j'ai pensé Netscape :o
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 11-02-2004 à 08:52:47    

Ah très bien merci Gilou !
Oui de toute façon j'ai écrit mozilla mais en fait j'utilise firefox, je voulais généraliser ;-)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed