Salut à tous !
Je rencontre un petit problème. J'ai développé une application utilisant plusieurs standards :
- XML pour le stockage des données
- XSL pour la mise en forme
- Javascript pour les opérations et les modifications DOM
- HTML pour la page de garde.
Les applets Javascript appellent les différentes feuilles XSL et passent (parfois) des paramètres utiles. Sous firefox, aucun problème, ça marche du tonnerre. Par contre, le passage à IE ne se fait pas sans mal... Voici les morceaux de code incriminés :
Page HTML :
<a href="javascript:void(0)" onClick="envoi(document.choi.choixprof.value, document.choi.choixnive.value, document.choi.choixsall.value, document.choi.choixcale.value)">
Lors d'un clic sur le lien, la fonction envoi est appelée, et elle passe le professeur, le niveau, la salle et la semaine chosis (il s'agit d'un emploi du temps dynamique)
Javascript :
function envoi(prof, niv, sal, jou) {
if (document.implementation && document.implementation.createDocument) {
envoiMozilla(prof, niv, sal, jou);
} else {
envoiIE(prof, niv, sal, jou);
}
}
function envoiIE(prof, niv, sal, jou) {
if ((prof==0)&&(niv==0)&&(sal==0)) {
alert('Veuillez sélectionner une entité pour la visualisation (professeur, niveau ou salle)');
} else {
if (((prof!=0)&&(niv!=0))||((prof!=0)&&(sal!=0))||((niv!=0)&&(sal!=0))||((prof!=0)&&(niv!=0)&&(sal!=0))) {
alert('Veuillez sélectionner UNE ET UNE SEULE entité pour la visualisation (professeur OU niveau OU salle)');
} else {
if (jou==0) {
alert('Veuillez sélectionner une semaine pour la visualisation');
} else {
var edtxml = new ActiveXObject("Microsoft.XMLDOM");
edtxml.async = false;
edtxml.load("edt.xml");
var edtxsl = new ActiveXObject("Microsoft.XMLDOM");
edtxsl.async = false;
edtxsl.load("edt.xsl");
edtxsl.selectSingleNode("//xsl:param[@name=\"id_jo\"]/@select").nodeValue = "'" + jou + "'";
if (prof!=0) {
edtxsl.selectSingleNode("//xsl:param[@name='id_entite']/@select").nodeValue = "'" + prof +"'";
edtxsl.selectSingleNode("//xsl:param[@name='entite']/@select").nodeValue = "'prof'";
} else {
if (niv!=0) {
edtxsl.selectSingleNode("//xsl:param[@name='id_entite']/@select").nodeValue = "'" + niv +"'";
edtxsl.selectSingleNode("//xsl:param[@name='entite']/@select").nodeValue = "'niv'";
} else {
edtxsl.selectSingleNode("//xsl:param[@name='id_entite']/@select").nodeValue = "'" + sal +"'";
edtxsl.selectSingleNode("//xsl:param[@name='entite']/@select").nodeValue = "'sal'";
}
}
var target = document.getElementById("emploitemps");
target.innerHTML = edtxml.transformNode(edtxsl);
}
}
}
}
XSL :
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="id_jo" select="'0'"/>
<xsl:param name="id_entite" select="0"/>
<xsl:param name="entite" select="toto"/>
<xsl:template match="/">
<div id="affedt">
<xsl:variable name="id_jo_deb" select="(($id_jo)-1)"/>
<xsl:variable name="id_jo_fin" select="(($id_jo)+7)"/>
<xsl:choose>
<xsl:when test="$entite='prof'">
...
</xsl:when>
<xsl:when test="$entite='niv'">
...
</xsl:when>
<xsl:when test="$entite='sal'">
...
</xsl:when>
</xsl:choose>
</div>
</xsl:template>
</xsl:stylesheet>
Les morceaux de code posant problème ont été mis en gras... Est-ce que quelqu'un aurait LA solution magique ???
D'avance, merci infiniment !
Adrien D.
Partager