Bonjour,

Je débute et j'ai trouvé un code qui fonctionne bien pour associer en externe (dans un fichier HTML) un fichier XML et XSL et permettre ainsi la visualisation du résultat aussi bien dans IE que dans les autres navigateurs.

Néanmoins, la méthode utilisée pour IE avec des contrôles ActiveX n'est pas très pratique pour l'utilisateur qui doit modifier le paramétrage de son navigateur et diminuer ainsi la sécurité.

J'ai trouvé deux articles et exemples de code qui permettent de se passer des contrôles ActiveX mais j'ai du mal à l'intégrer dans mon code initial (faute d'expérience probablement )

Qui pourrait m'aider à modifier mon code pour que cela fonctionne dans IE sans utiliser les contrôles ActiveX ?

Voici le code initial (complet) :

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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
    <title>Visualisation</title>
    <script>
function loadXMLDoc(filename)
{
if (window.ActiveXObject)
  {
  xhttp = new ActiveXObject("Msxml2.XMLHTTP");
  }
else 
  {
  xhttp = new XMLHttpRequest();
  }
xhttp.open("GET", filename, false);
try {xhttp.responseType = "msxml-document"} catch(err) {} // Helping IE11
xhttp.send("");
return xhttp.responseXML;
}
function displayResult()
{
xml = loadXMLDoc("Flux.xml");
xsl = loadXMLDoc("XSLT.xsl");
// code pour IE
if (window.ActiveXObject || xhttp.responseType == "msxml-document")
  {
  ex = xml.transformNode(xsl);
  document.getElementById("contenu").innerHTML = ex;
  }
// code pour Chrome, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
  {
  xsltProcessor = new XSLTProcessor();
  xsltProcessor.importStylesheet(xsl);
  resultDocument = xsltProcessor.transformToFragment(xml, document);
  document.getElementById("contenu").appendChild(resultDocument);
  }
}
</script> </head>
  <body onload="displayResult()">
    <div id="contenu"> </div>
 
  </body>
</html>
Et le bout de code à adapter pour éviter les contrôles ActiveX pour IE :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
var xml = document.createElement("xml");
xml.src = "data.xml";
document.body.appendChild(xml);
var xmlDocument = xml.XMLDocument;
document.body.removeChild(xml);
Autre variante trouvée sur Internet :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
function parseWitoutActiveX(str){
var doc= null;
var xmlIsland = document.createElement('xml');
if(xmlIsland){
xmlIsland.setAttribute('id','xmlActiveXGetRid');
xmlIsland.innerHTML = str;
document.body.appendChild(xmlIsland);
var doc  = xmlIsland.XMLDocument;
document.body.removeChild(xmlIsland);
return  doc;
}
Et voici les liens correspondants avec les explications (qui pour moi ne sont pas suffisantes... ) :

http://http://dean.edwards.name/weblog/2006/04/easy-xml/

http://www.codeproject.com/Tips/5877...and-Making-the

Merci par avance pour votre aide !