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 :
<body onload="transform(loadXML(nom), loadXML('index.xsl'), 'transform');">
La fonction LoadXML charge le fichier XML ou XSL :
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;
} |
La fonction marche bien puisque dans mon alert je récupère le contenu de mes fichiers XML et XSL.
Je suppose donc que l'erreur vient de ma fonction de transformation qui est la suivante :
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);
}
} |
Comme je l'ai précisé dans le titre, ça fonctionne sous IE mais pas sous les autres navigateurs.
Ma page HTML dois recevoir du XML mis en forme par le XSL.
Des idées sur l'erreur ? Merci d'avance
Partager