[RESOLU][XSL/JavaScript]problème d'intégration code JS dans le XSL

problème d'intégration code JS dans le XSL [RESOLU][XSL/JavaScript] - XML/XSL - Programmation

Marsh Posté le 27-04-2005 à 12:29:49    

Bonjour à tous et a tous, voici mon problème, j'aimerai placer mon code JS suivant :

Code :
  1. <script language="JavaScript">
  2. var button_down = null; //pour définir une valeur par défaut de bouton enfoncé
  3. function findCells(table) {  //fct qui recherche les cellules.
  4.                        var tbody = table.firstChild;
  5.                            while (tbody.nodeName != "TBODY" ) tbody = tbody.nextSibling;
  6.                        var tr = tbody.firstChild;
  7.                            while (tr.nodeName != "TR" ) tr = tr.nextSibling;
  8.                        var td_left = tr.firstChild;
  9.                            while (td_left.nodeName != "TD" ) td_left = td_left.nextSibling;
  10.                        var td_center = td_left.nextSibling;
  11.                            while (td_center.nodeName != "TD" ) td_center = td_center.nextSibling;
  12.                        var td_right = td_center.nextSibling;
  13.                            while (td_right.nodeName != "TD" ) td_right = td_right.nextSibling;
  14.                        var found = new Array(td_left, td_center, td_right);
  15.                            return found;
  16.                            }
  17. function buttonOver(table) {
  18.                          if (button_down == table.id) return true; //Va détécter si un bouton est survolé !
  19.        var tds = findCells(table);
  20.                          tds[0].className = "bttn_left_on";
  21.                          tds[1].className = "bttn_center_on";
  22.                          tds[2].className = "bttn_right_on";
  23.                            }
  24. function buttonOut(table) {
  25.                          if (button_down == table.id) return true;//Va détécter si un bouton est relaché !
  26.        var tds = findCells(table);
  27.                          tds[0].className = "bttn_left_out";
  28.                          tds[1].className = "bttn_center_out";
  29.                          tds[2].className = "bttn_right_out";
  30.                           }
  31. function buttonUp(table) {
  32.                          if (button_down == table.id) return true;//Va détécter si un bouton n'est pas enfoncé !
  33.        var tds = findCells(table);
  34.                          tds[0].className = "bttn_left_up";
  35.                          tds[1].className = "bttn_center_up";
  36.                          tds[2].className = "bttn_right_up";
  37.                            }
  38. function buttonDown(table) {
  39.                              if (button_down == table.id) return true;//Va détécter si un bouton est enfoncé !
  40.                          var tds = findCells(table);
  41.                          tds[0].className = "bttn_left_down";
  42.                          tds[1].className = "bttn_center_down";
  43.                          tds[2].className = "bttn_right_down";
  44.                            }
  45. function buttonClick(table) {
  46.                               if (null != button_down)  //On va chercher ici si un bouton est enfoncé ou non, si oui on change l'image!
  47.            {
  48.                              if (document.getElementById)
  49.            {
  50.                                    var table_down = document.getElementById(button_down)
  51.                                    } else if (document.all && !document.getElementById)
  52.                      {
  53.                                             eval("var table_down = document.all."+button_down+";" );
  54.                                              }
  55.          if (table_down) buttonOut(table_down);
  56.                                  }
  57.         button_down = table.id;
  58.         if (table_down) buttonOut(table_down);        
  59.                             }
  60.     <!--   //Fonction qui lance les 2 frames
  61.         function TwoFrames(URL1,Fr1Name,URL2,Fr2Name)
  62.           {
  63.                   parent.frames[Fr1Name].location.href=URL1;
  64.                   parent.frames[Fr2Name].location.href=URL2;
  65.                  }
  66.     //-->
  67. </script>


 
mais cela ne focntionne pas. Et voilà ce que XML Spy me retourne :
This file is not well formed. Name letter(Letter(|'_'| ':')) Name-Character * expected.
Dans ce cas ci sa indique le ligne N°53 entre les 2 &. :??:  
Est ce que cela veut dire que je dois remplacer dans tout mon code les _???  
Et je voudrais savoir si je peux placer simplement mon script à cette endroit de mon code XSL??

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <?xml:stylesheet  type="text/css" href="Style.css"?>
  3. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
  4. <xsl:template match="modules">           
  5.      <html>
  6.           <head>
  7.                     <title>XSL Example</title>
  8.           <script language="JavaScript">
  9.            ...
  10.           </script>
  11.           </head>           
  12.           <body bgcolor="#ABACD5" >
  13.             </body>
  14. </html>
  15. </xsl:template>
  16. </xsl:stylesheet>


Je voudrais également savoir comment changer la couleur du background, car quand je fais un bgcolor dans le body, le fond reste blanc !
 
J'espère avoir posté sa dans la bonne section, car la section XML/XSl semble être pour le tool indiqué et pas vraiment pour les questions relatives au XML/XSl.
 
Merci à tous de votre aide,  :jap:


Message édité par Devil6662 le 28-04-2005 à 16:40:46
Reply

Marsh Posté le 27-04-2005 à 12:29:49   

Reply

Marsh Posté le 27-04-2005 à 12:39:41    

bgcolor existe pas, c'est plutôt .style.backgroundColor = '#fff' ;) Dommage que y'a des mix avec du vieux HTML (c'est pas <script language="javascript">, mais <script type="text/javascrtipt"> ). Et le document.all qui traîne, c'est encore pire ;)

Reply

Marsh Posté le 27-04-2005 à 14:04:17    

Pour la couleur de backgroung sa foire, j'ai essayer ce que tu m'as dis mais sa na va pas !
FlorentG comment dois mettre sa dans ma balise body d'après toi ????
 
Pour le problème des erreurs sur le JavaScript j'ai trouvé mon erreur, il fallait rajouter ceci <![CDATA[ ... code ... ]]> entre les balises <SCRIPT> et </SCRIPT> comme suit :

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <?xml:stylesheet  type="text/css" href="Style.css"?>
  3. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
  4. <xsl:template match="modules">           
  5.      <html>
  6.           <head>
  7.           <title>XSL TEST</title>
  8.           <script language="JavaScript">
  9.           <![CDATA[
  10.            ..... (Voir au dessus)
  11.             ]]>
  12.           </script>
  13.           </head>           
  14.           <body style="background-color:#ABACD5;">
  15.                   <h1><u><center>Your Modules :</center></u></h1>
  16.    <xsl:apply-templates select="header/col"/>
  17.    <center>
  18.     <table border="1" bgcolor="lime">
  19.      <thead align="center">
  20.               <tr>
  21.               <td><strong>
  22.                                                  <xsl:value-of select="header/col[1]/@name"/>
  23.         </strong></td>
  24.               <td><strong>
  25.                                                  <xsl:value-of select="header/col[2]/@name"/>
  26.         </strong></td>
  27.         </tr>
  28.         <tr>
  29.               <td><strong>
  30.                                                  <xsl:value-of select="row/col[1]"/>
  31.         </strong></td>
  32.               <td><strong>
  33.                                                  <xsl:value-of select="row/col[2]"/>
  34.         </strong></td>
  35.         </tr>
  36.         <table class="bttn" width="780" cellpadding="0" cellspacing="0">
  37.              <tr>
  38.              <td>
  39.                       <table  ID="reporting" class="bttn" cellpadding="0" cellspacing="0" onMouseOver="buttonOver(this);"             onMouseOut="buttonOut(this);" onMouseDown="buttonDown(this);"
  40.            onMouseUp="buttonUp(this);" onClick="buttonClick(this);">
  41.                          <tr>
  42.                              <td class="bttn_left_out"><table class="bttn" cellspacing="0" width="12"><tr><td></td></tr>             </table></td>
  43.                              <td class="bttn_center_out">
  44.                            <A HREF="javascript:TwoFrames('../fct1024/fctreport.html','fct','../main/reporting/Report.html','main');">           Reporting</A></td>
  45.                              <td class="bttn_right_out"><table class="bttn" cellspacing="0" width="12"><tr><td></td></tr>             </table></td>
  46.                          </tr>
  47.                       </table>
  48.          </td>
  49.         </tr>
  50.         </table>      
  51.      </thead>
  52.             <xsl:for-each select="header/col">
  53.                  <xsl:value-of select="@name"/> 
  54.                  <xsl:if test="not (position()=last())">
  55.                        <xsl:text>blablabla</xsl:text>
  56.                     </xsl:if>
  57.                    </xsl:for-each>
  58.      <!-- <xsl:apply-templates select="row/col[2]"/> -->
  59.     </table>
  60.       }
  61.    </center>
  62.             </body>
  63. </html>
  64. </xsl:template>
  65. </xsl:stylesheet>


 
Mais par contre, maintenant que j'appel mes fonctions JS (onClick(),...)dans mon code XSL sa ne fonctionne pas ( entre les lignes 36 et 47 ), rien ne s'affiche, meme pas les images ! Je ne sais pas pourquoi, je ne comprends pas d'ou vient cette erreur ! :?  
De plus je voudrais savoir si la ligne suivante est bonne pour importer mon CSS :

Code :
  1. <?xml:stylesheet  type="text/css" href="Style.css"?>


 
Merci à tous pour votre aide, pour ma part je continue a chercher de mlon coté.

Reply

Marsh Posté le 27-04-2005 à 16:21:51    

ben pourquoi tu mets pas ton script dans un fichier .js et y faire reference dans ton xsl ?  
 tout comme tu le fais tres bien pour ton css dailleurs..

Reply

Marsh Posté le 27-04-2005 à 16:23:09    

Ouais, au même titre qu'il faut dégager les styles dans des fichiers css séparés, il _faut_ dégager les scripts dans des .js

Reply

Marsh Posté le 27-04-2005 à 16:23:49    

sinon dans le xslt c'est ca que tu dois mettre:

Code :
  1. <xsl:processing-instruction name="xml-stylesheet">href="style.css" type="text/css"</xsl:processing-instruction>

Reply

Marsh Posté le 27-04-2005 à 16:25:20    

je vais essayer mais je ne pense pas que cela va résoudre mon problème.
 
En fait mon gros problème est l'utilisation de mon javascript au sein meme du body de mon fichier XSL. je voudrais faire appel à mes fonction JS, et à mon CSS mais rien ne se passe, je place le code suivant dans le body du fichier XSL et rien ne s'affiche, pas même un lien, rien, qued, comme si le code ne fait rien:

Code :
  1. <table class="bttn" width="780" cellpadding="0" cellspacing="0">
  2. <tr>
  3.     <td>
  4.         <table  ID="reporting" class="bttn" cellpadding="0" cellspacing="0" onMouseOver="buttonOver(this);" onMouseOut="buttonOut(this);" onMouseDown="buttonDown(this);" onMouseUp="buttonUp(this);" onClick="buttonClick(this);">
  5.             <tr>
  6.                   <td class="bttn_left_out"><table class="bttn" cellspacing="0" width="12"><tr><td></td></tr>
  7.            </table></td>
  8.           <td class="bttn_center_out">
  9.           <A HREF="javascript:TwoFrames('../fct1024/fctreport.html','fct','../main/reporting/Report.html','main');">
  10.                Reporting
  11.           </A></td>
  12.           <td class="bttn_right_out"><table class="bttn" cellspacing="0" width="12"><tr><td></td></tr>
  13.           </table></td>
  14.         </tr>
  15. </table>
  16. </td>
  17. </tr>
  18. </table>


 
Alors en gros je me demande comment je dois faire pour voir mes boutons s'afficher avec le lien et le CSS qui leurs confèrent leur aspect??
Comment faire pour atteindre mon code JS, car vraisemblablement je m'y prend mal, je suis un noob là dedans, et j'ai vraiment besoin de votre aide,
Merci d'avance à tous  :jap:

Reply

Marsh Posté le 27-04-2005 à 16:28:24    

Et pour le .js je peux faire comme sa??

Code :
  1. <xsl:processing-instruction name="xml-stylesheet">href="script.js" type="text/js"</xsl:processing-instruction>


et/ou

Code :
  1. <?xml-stylesheet href="script.js" type="text/js"?>


 
Ou est ce que je dois m'y prendre différement???
Merci a tous les 2  :hello:

Reply

Marsh Posté le 27-04-2005 à 16:30:18    

Euh... Commence pas à essayer tout et n'importe quoi, hein ;) Un .js n'est pas une feuille de style...

Reply

Marsh Posté le 27-04-2005 à 16:31:30    

Reply

Marsh Posté le 27-04-2005 à 16:31:30   

Reply

Marsh Posté le 27-04-2005 à 16:32:04    

Je dois faire quoi alors???  
Un import???

Reply

Marsh Posté le 27-04-2005 à 16:56:17    

Ceci dans ma balise SCRIPT:

Code :
  1. language=JavaScript src="menu_array.js" type=text/javascript

???

Reply

Marsh Posté le 28-04-2005 à 10:04:21    

Imagine un atelier dans un garage ou l'on construit des voitures. Le mecano c'est le procceseur xslt. si tu lui dis qu'il doit mettre une porte sur la voiture il va comprendre. mais si tu lui donne une porte en tant "qu'outil" dans la main il sera pas quoi en faire, et il te le mettra pas sur ta caisse..
les processing instructions servent a dire : genere moi un truc comme ca <? ... > dns mon fichier resultat. ( met une porte sur la voiture)
si tu met directement <?... > dans le xslt ca revient a lui donner la porte comme outil..  
 
c'est plus clair?

Reply

Marsh Posté le 28-04-2005 à 10:23:07    

Oui c'est beaucoup plus clair, merci frenchkiss :jap:

Reply

Sujets relatifs:

Leave a Replay

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