Bonjour à tous !
Je suis en train d'écrire en site web avec stockage de l'information dans des fichiers XML. Lors de la consultation du site, un script javascript se charge de télécharger depuis le site le fichier XML contenant les données à visualiser et une feuille de style XSL. Il effectue une transformation (XML + XSL => HTML) et incorpore le résultat dans une page HTML servant en quelque sorte de template.
La transformation est réalisée par ce code :
Code :
- var currentPage = 'accueil.xml';
- var previousPage;
- var xslPageLoaded = false;
- var xmlPageLoaded = false;
- function loadPage2(page){
- var xhr_request_xmlPage = null;
- var xhr_request_xslPage = null;
- xhr_request_xslPage = getXMLHttpRequest();
- xhr_request_xslPage.onreadystatechange = function(){
- if(xhr_request_xslPage.readyState == 4 && xhr_request_xslPage.status == 200) {
- xslPageLoaded = true;
- if(xmlPageLoaded){
- transformPage(xhr_request_xmlPage.responseXML,xhr_request_xslPage.responseXML);
- }
- }
- }
- xhr_request_xslPage.open("GET","/style/v2/xsl/transform.xsl",true);
- xhr_request_xslPage.send(null);
-
- xhr_request_xmlPage = getXMLHttpRequest();
- xhr_request_xmlPage.onreadystatechange = function(){
- if(xhr_request_xmlPage.readyState == 4 && xhr_request_xmlPage.status == 200) {
- xmlPageLoaded = true;
- if(xslPageLoaded){
- transformPage(xhr_request_xmlPage.responseXML,xhr_request_xslPage.responseXML);
- }
- }
- }
- xhr_request_xmlPage.open("GET","/xml/"+page,true);
- xhr_request_xmlPage.send(null);
- }
- function transformPage(xmlPage,xslPage){
- var processorPage = new XSLTProcessor();
- processorPage.importStylesheet(xslPage);
- processorPage.setParameter(null,"useJsLinks","true" );
-
- var resultatPage = processorPage.transformToFragment(xmlPage,document);
-
- document.getElementById("content" ).innerHTML="";
- document.getElementById("content" ).appendChild(resultatPage);
-
- xslPageLoaded = false;
- xmlPageLoaded = false;
- }
|
Le problème est que, bien que ce code fonctionne parfaitement sous Firefox, je n'ai pour le moment toujours pas trouvé comment obtenir le même résultat avec Internet Explorer (y compris la version 7).
J'avais essayé avec ce code là :
Code :
- function transformPageIE(xmlPage,xslPage){
- var xslt = new ActiveXObject("Msxml2.XSLTemplate.3.0" );
- xslt.stylesheet = xslPage;
- xslProc = xslt.createProcessor();
- xslProc.input = xmlPage;
- xslProc.addParameter("useJsLinks", "true" );
- xslProc.transform();
- document.getElementById("content" ).innerHTML="";
- document.getElementById("content" ).appendChild(xslProc.output);
- }
|
mais malheureusement, il ne fonctionne pas. Quelqu'un pourrait-il m'aider à comprendre les mystères du javascript sous IE ?
Merci d'avance.
Message édité par Dumbledore le 23-02-2007 à 16:01:31