Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1835 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Transformation XSLT et javascript

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Transformation XSLT et javascript

n°1518992
Dumbledore
Posté le 23-02-2007 à 16:00:01  profilanswer
 

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 :
  1. var currentPage = 'accueil.xml';
  2. var previousPage;
  3. var xslPageLoaded = false;
  4. var xmlPageLoaded = false;
  5. function loadPage2(page){
  6.   var xhr_request_xmlPage = null;
  7.   var xhr_request_xslPage = null;
  8.   xhr_request_xslPage = getXMLHttpRequest();
  9.   xhr_request_xslPage.onreadystatechange = function(){
  10.     if(xhr_request_xslPage.readyState == 4 && xhr_request_xslPage.status == 200) {
  11.       xslPageLoaded = true;
  12.       if(xmlPageLoaded){
  13.         transformPage(xhr_request_xmlPage.responseXML,xhr_request_xslPage.responseXML);
  14.       }
  15.     }
  16.   }
  17.   xhr_request_xslPage.open("GET","/style/v2/xsl/transform.xsl",true);
  18.   xhr_request_xslPage.send(null);
  19.  
  20.   xhr_request_xmlPage = getXMLHttpRequest();
  21.   xhr_request_xmlPage.onreadystatechange = function(){
  22.     if(xhr_request_xmlPage.readyState == 4 && xhr_request_xmlPage.status == 200) {
  23.       xmlPageLoaded = true;
  24.       if(xslPageLoaded){
  25.         transformPage(xhr_request_xmlPage.responseXML,xhr_request_xslPage.responseXML);
  26.       }
  27.     }
  28.   }
  29.   xhr_request_xmlPage.open("GET","/xml/"+page,true);
  30.   xhr_request_xmlPage.send(null);
  31. }
  32. function transformPage(xmlPage,xslPage){
  33.   var processorPage = new XSLTProcessor();
  34.   processorPage.importStylesheet(xslPage);
  35.   processorPage.setParameter(null,"useJsLinks","true" );
  36.  
  37.   var resultatPage = processorPage.transformToFragment(xmlPage,document);
  38.  
  39.   document.getElementById("content" ).innerHTML="";
  40.   document.getElementById("content" ).appendChild(resultatPage);
  41.  
  42.   xslPageLoaded = false;
  43.   xmlPageLoaded = false;
  44. }


 
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 :
  1. function transformPageIE(xmlPage,xslPage){
  2.   var xslt = new ActiveXObject("Msxml2.XSLTemplate.3.0" );
  3.   xslt.stylesheet = xslPage;
  4.   xslProc = xslt.createProcessor();
  5.   xslProc.input = xmlPage;
  6.   xslProc.addParameter("useJsLinks", "true" );
  7.   xslProc.transform();
  8.   document.getElementById("content" ).innerHTML="";
  9.   document.getElementById("content" ).appendChild(xslProc.output);
  10. }


 
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
mood
Publicité
Posté le 23-02-2007 à 16:00:01  profilanswer
 

n°1518999
FlorentG
Unité de Masse
Posté le 23-02-2007 à 16:05:11  profilanswer
 

Ce genre de choses se font plutôt côté serveur...

n°1519005
rufo
Pas me confondre avec Lycos!
Posté le 23-02-2007 à 16:13:17  profilanswer
 

y'a la lib ajaxslt qui marche pour firefox et IE

n°1519045
Dumbledore
Posté le 23-02-2007 à 17:06:55  profilanswer
 

FlorentG : c'est exactement ce que je ne veux pas faire car j'ai un prob d'API avec mon serveur (le code que j'avais écrit en PHP5 ne voulait pas fonctionner avec PHP4 et l'adaptation PHP4 que j'en ai fait fonctionnait mal).
 
Rufo : je vais regarder ça, merci

n°1519419
FlorentG
Unité de Masse
Posté le 24-02-2007 à 16:54:58  profilanswer
 

Sauf que l'XSLT est les navigateurs, bof bof... A part si t'es en milieu contrôlé, faut éviter. Surtout si c'est pour une page publique, n'espère pas être référencé :(
 
Pour l'adaptation php4, c'est pas trop compliqué pourtant

n°1520468
Dumbledore
Posté le 26-02-2007 à 19:15:06  profilanswer
 

FlorentG a écrit :

Sauf que l'XSLT est les navigateurs, bof bof... A part si t'es en milieu contrôlé, faut éviter. Surtout si c'est pour une page publique, n'espère pas être référencé :(
 
Pour l'adaptation php4, c'est pas trop compliqué pourtant


 
Manifestement, en PHP4, mon hébergeur m'envoie bouler.
Finalement, j'ai laissé tombé la lib proposé par rufo pour utiliser Sarissa.
En gros, ça crée une sorte de wrapper qui permet d'utiliser l'API d'IE avec la syntaxe de Firefox. Ca marche pas mal. Manque juste un support pour Konqueror ou autre.
 
Quant au référencement, c'est pas trop grave. C'est juste un petit site perso sur lequel on ne tombe pas par hasard.
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Transformation XSLT et javascript

 

Sujets relatifs
pbm javascript onload - flashRécupérer propriété CSS en JavaScript/DOM
Javascript et POOjavascript et IE
[Code] Horloge Analogique en HTML/JavascriptRequête sql + javascript
[javascript] parent.location fonctionne pas bienUser Javascript et CSS
javascript : recherche de script (urgent)Pb javascript focus() sur un element en display:none
Plus de sujets relatifs à : Transformation XSLT et javascript


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR