2009-04-28 7 views
1

Je suis un débutant au monde XSL et face à quelques problèmes avec XSLXSL + Java Script problème ... Impossible d'appeler la fonction javascript à partir du fichier xsl

<?xml version="1.0"?> 

<xsl:stylesheet xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 

<xsl:template match="/"> 
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
     <head> 
     <link rel="stylesheet" type="text/css" href="mycss.css" /> 
     <script language="javascript" type="text/javascript" > 
         <xsl:text></xsl:text> 
     </script> 

     </head> 
    <body> 

    <table> 
     <tr bgcolor='yellow' onMouseover="changeColor(event, 'red');"> MYTEXT 
     </tr> 
    </table> 
     </body> 
    </html> 
</xsl:template> 
</xsl:stylesheet> 

et mon fichier XML est

<COUNTRY> 
     <CITY>X</CITY> 
     <CITY>Y</CITY> 
</COUNTRY> 

et mon fichier Javascript est

problème n'est pas la souris sur, couleur ne change dans le navigateur ........

+0

Qu'est-ce que cela a exactement à voir avec Java? – Calvin

Répondre

2

Dans votre XSL je ne vois aucun fichier JavaScript (.js) inclus, ni la fonction javascript que vous avez mentionnée. Deuxièmement, où est la variable ie définie que vous utilisez dans la fonction changeColor?

Vérifiez le code HTML qui est généré en faisant la source de vue sur votre navigateur pour voir si tout est correct. Ajoutez des alertes dans votre fonction pour confirmer si elle est effectivement appelée.

0

Je suggérerais saupoudrer votre fonction changeColor avec des alertes pour vérifier vos conditions. -À-dire, avant la première ligne de la fonction:

alert("IE?" + ie); 

Puis, après votre première ligne:

alert("Src: " + source); 

Ensuite, avant la ligne qui change la couleur:

alert("style: " + source.style); 
alert("bgclr: " + source.style.backgroundColor); 

De toute évidence, vous pourriez faire des choses similaires avec un débogueur Javascript, mais je suppose que vous n'en utilisez pas.

0

Si même vos alertes ne sont pas s'affichés (suggestion de jsight ci-dessus) faites ceci: Si votre javascript est pas xslt mais au lieu html, appelez la fonction comme suit:

onMouseover="javascript:changeColor(event, 'red');" 

Si votre script est dans le fichier xslt:

  1. en xsl: stylesheet, spécifiez

    xmlns: MyScript = 'http://www.example.com/myscript'

  2. Déclarez la section de script comme

    fonction changeColor (e, highlightcolor) { source =-à-dire? event.srcElement: e.target source.style.backgroundColor = highlightcolor}

  3. Appelez la fonction:

    onmouseover = "MyScript: changeColor (événement, 'rouge');"

+0

Salut Rashmi, J'utilise XSL Script et appelle la fonction Javascript définie dans un autre fichier. Pouvez-vous s'il vous plaît éléborer plus sur la solution ci-dessus que j'ai essayé et la couleur ne change pas sur mouseover événement dans firefox (Linux) –

+0

OK ... donc votre javascript est dans un fichier js distinct. Dans ce cas faites le foll: 1. Assurez-vous que votre page sur laquelle vous appelez ce xslt inclut le fichier javascript. Pour cela, vous devriez avoir les éléments suivants dans la tête html: 2. Dans votre xslt, dites simplement: onMouseover = "javascript: changeColor (événement, 'rouge');" Cela devrait fonctionner. Si ce n'est pas le cas, dans votre fonction changeColor, mettez une déclaration d'alerte au début par exemple. alert ('Fonction changecolor entrée'); et de voir si au moins l'alerte est affichée. –

0

Il n'y a aucune alerte levée dans firefox .... Je doute que la fonction soit appelée ou non.

+0

Avez-vous spécifié le bon chemin src dans votre balise de script? Utilisez-vous onMouseover = "javascript: changeColor (event, 'red');" ? –