Bonjour,
J'ai un problème de compatibilité entre IE et les autres navigateurs (Firefox, Google Chrome, ...).
Je lance donc une fonction dans le OnLoad du body de ma page html comme ceci :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part <body onload="transform(loadXML(nom), loadXML('index.xsl'), 'transform');">
La fonction LoadXML charge le fichier XML ou XSL :
La fonction marche bien puisque dans mon alert je récupère le contenu de mes fichiers XML et XSL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 function loadXML(url) { var xmlDoc; // Internet Explorer if (window.ActiveXObject){ xmlDoc = new ActiveXObject('Msxml2.XMLDOM'); xmlDoc.async = false; xmlDoc.load(url); } //Firefox else if (window.XMLHttpRequest) { xmlDoc = new XMLHttpRequest(); xmlDoc.overrideMimeType('text/xml'); xmlDoc.open('GET', url, false); xmlDoc.send(null); //La fonction lit bien le fichier XML //alert(xmlDoc.responseText); } return xmlDoc; }
Je suppose donc que l'erreur vient de ma fonction de transformation qui est la suivante :
Comme je l'ai précisé dans le titre, ça fonctionne sous IE mais pas sous les autres navigateurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 function transform(xml, xsl, id) { // FireFox if (window.XSLTProcessor) { //ERREUR ICI ? var fragment; var xsltProcessor = new XSLTProcessor(); xsltProcessor.importStylesheet(xsl); fragment = xsltProcessor.transformToFragment(xml, document); var target = document.getElementById(id); target.appendChild(fragment); document.appendChild(target); //ERREUR ICI ? } // Internet Explorer else if (window.ActiveXObject) { var target = document.getElementById(id); target.innerHTML = xml.transformNode(xsl); } }
Ma page HTML dois recevoir du XML mis en forme par le XSL.
Des idées sur l'erreur ? Merci d'avance![]()
Partager