PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 27-04-2011 10:38:45

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Transformation XML & XSL => HTML

Bonjour,

Suite à cette conversation,

Je vous demande votre avis sur le script suivant.

Je m'interesse en particulier en savoir plus sur XSLTProcessor().

[code javascript]
var XMLtoHTML = {
    xml : '',
    xsl : '',
    html : '',
    loadFile : function(fileName){
        // Pour tous les navigateurs
        if(window.XMLHttpRequest){
            xhttp = new XMLHttpRequest();
        }
        // Sauf IE
        else{
            xhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        // On charge le fichier XML
        xhttp.open("GET", fileName, false);
        xhttp.send("");
        return xhttp.responseXML;
    },
    loadXML : function(fileNameXML){
        this.xml = this.loadFile(fileNameXML);
    },
    loadXSL : function(fileNameXSL){
        this.xsl = this.loadFile(fileNameXSL);
    },
    transformXML : function(fileNameXML, fileNameXSL){
        // On charge les données
        this.loadXML(fileNameXML);
        this.loadXSL(fileNameXSL);
        // Pour IE
        if (window.ActiveXObject){
            this.html = this.xml.transformNode(this.xsl);
            // document.getElementById("example").innerHTML=ex;
        }
        // Pour les autres
        else{
            if(document.implementation && document.implementation.createDocument){
                xsltProcessor = new XSLTProcessor();
                xsltProcessor.importStylesheet(this.xsl);
                this.html = xsltProcessor.transformToFragment(this.xml, document);
                // document.getElementById("example").appendChild(resultDocument);
            }
            else{
                alert('Erreur');
            }
        }
    },
    refreshElement : function(fileNameXML, fileNameXSL, elementID){
        // On vide l'élément
        this.removeAllElements(elementID);
        // On transforme
        this.transformXML(fileNameXML, fileNameXSL);
        // On récupère le conteneur
        var element = document.getElementById(elementID);
        // Pour IE
        if(document.all){
            element.innerHTML = this.html;
        }
        // Pour les autres
        else{
            element.appendChild(this.html);
        }
    },
    removeAllElements : function(elementID){
        var element = document.getElementById(elementID);
        var firstChild;
        while(firstChild = element.firstChild){
            element.removeChild(firstChild);
        }
    }
};
[/code]

Merci !

Dernière modification par moijhd (27-04-2011 10:40:31)

Hors ligne

#2 27-04-2011 18:19:41

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 624
Site Web

Re : Transformation XML & XSL => HTML

Bonsoir,

moijhd a écrit :

// Pour tous les navigateurs
    if(window.XMLHttpRequest){
      xhttp = new XMLHttpRequest();
    }
    // Sauf IE
    else{
      xhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

Désolé mais j'ai arrêté ma lecture ici. Si tu arrives à faire fonctionner ce bout de code je prends des cours chez toi^^. (juste au cas où, j'entends par là qu'avec ça t'arrive à faire ce que tu as voulu que ce code fasse).

++

Dernière modification par Jc (27-04-2011 18:20:56)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#3 28-04-2011 15:31:01

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Re : Transformation XML & XSL => HTML

Bien évidement cela a fonctionné.

J'ai cependant du mal a voir pourquoi c'est si mauvais que ça tongue

J'ai regardé ce que je pouvais trouver pour obtenir un résultat similaire :

[code javascript]
function createXMLHttpRequest() {
   try { return new XMLHttpRequest(); } catch(e) {}
   try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
   alert("XMLHttpRequest not supported");
   return null;
}
[/code]

Mais je fais la même chose (certes pas avec la même version) ?

Dernière modification par moijhd (28-04-2011 18:22:13)

Hors ligne

#4 28-04-2011 16:51:15

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 624
Site Web

Re : Transformation XML & XSL => HTML

Bonjour,

C'est déjà beaucoup mieux (ce n'est pas encore ça), mais le résultat ne peut être similaire surtout si tu veux quelque chose de stable, propre et compatible multi navigateur, qui entre parenthèse ne l'est pas complètement mais c'est ton droit aussi de limiter ta compatibilité descendante. La différence est énorme car il n'y a qu'une structure try...catch pour intercepter un évènement d'erreur sur un appel d'objet qui n'existe pas, ce que ne fait pas du tout ton premier bout de code. Le deuxième bout de code le fera quand tu auras corrigé l'erreur que tu as faite.


++

Dernière modification par Jc (28-04-2011 16:58:35)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#5 28-04-2011 17:23:38

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 191

Re : Transformation XML & XSL => HTML

$.ajax(...................) wink
a++

Hors ligne

#6 28-04-2011 17:55:08

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Re : Transformation XML & XSL => HTML

Je pense que l'erreur se situe au niveau du choix de l'ActiveX ? Je vais chercher pour voir s'il y en a d'autres...Si en revanche il faut que j'ajoute quelque chose d'autre, je ne vois pas ^^

Concernant le $.ajax, je suppose qu'il faut référence à un framework (ce qui a priori ne m'intéresse pas ^^).

Dernière modification par moijhd (28-04-2011 18:11:59)

Hors ligne

#7 28-04-2011 18:12:06

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Re : Transformation XML & XSL => HTML

[code javascript]
function createXMLHttpRequest() {
    try { return new XMLHttpRequest(); } catch(e) {}
    try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch (e) {}
    try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch (e) {}
    try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
    try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
    throw new Error("This browser does not support XMLHttpRequest.");
    return null;
}
[/code]

??

J'ai ajouté des versions (je suppose qu'il y en a d'autres) et généralisé la méthode...mais je vois pas pourquoi ça serait mieux...
Et maintenant je me demande à qui servent les versions Msxml2.XMLHTTP, pour quoi les utiliser, et quelle version ?

Cette page indique pour 6 et 3 et pas les autres : http://blogs.msdn.com/b/xmlteam/archive … lorer.aspx

Dernière modification par moijhd (28-04-2011 18:50:59)

Hors ligne

#8 28-04-2011 18:31:18

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 624
Site Web

Re : Transformation XML & XSL => HTML

Bonsoir,

Quand on ne comprends pas, on essaye de lire, et peut être que je m'exprime mal. J'ai bien dit que c'etait ton droit de limiter ta compatibilité descendante, et par conséquent ton soucis ne viens pas du choix de tes activeX, mais .... que reste-t-il donc? ... de l'utilisation de ta structure try...catch. Je te recommande, surtout quand on ne connait pas, de lire la documentation.

A bientôt.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#9 28-04-2011 18:51:17

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Re : Transformation XML & XSL => HTML

[code javascript]
try {
    return new XMLHttpRequest();
}
catch(e) {
    alert("XMLHttpRequest not supported");
    return null;
}
[/code]

est licite ?

Et je fais ça pour tous ? Je le cascade ?

J'avais mal compris ta deuxième réponse. Je me suis attardé sur les versions. Ce que je proposais ne visait que les versions ^^
A vrai dire, je ne vois pas l'erreur concernant le try catch dans :

[code javascript]
function createXMLHttpRequest() {
   try { return new XMLHttpRequest(); } catch(e) {}
   try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
   alert("XMLHttpRequest not supported");
   return null;
}
[/code]

Dernière modification par moijhd (28-04-2011 19:02:41)

Hors ligne

#10 28-04-2011 18:54:52

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 191

Re : Transformation XML & XSL => HTML

>>Concernant le $.ajax, je suppose qu'il faut référence à un framework (ce qui a priori ne m'intéresse pas ^^).

dommage wink
vu ton niveau, çà aurai facilité les choses wink
a++

Hors ligne

#11 28-04-2011 18:59:52

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Re : Transformation XML & XSL => HTML

Je ne sais pas comment je dois le prendre :s (je crois plutôt négativement, mais je n'en suis pas sur).

Dernière modification par moijhd (28-04-2011 19:00:42)

Hors ligne

#12 28-04-2011 19:03:05

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 191

Re : Transformation XML & XSL => HTML

nan, absolument pas wink
il faut le prendre positivement wink
il faut faire avancer les choses wink
a++

Hors ligne

#13 28-04-2011 19:08:45

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 191

Re : Transformation XML & XSL => HTML

enfin moi, pour ma part, je ne te conseillerai pas sur une abération wink
a++

Hors ligne

#14 28-04-2011 19:08:48

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 624
Site Web

Re : Transformation XML & XSL => HTML

Bonsoir,

Tu as peut être raison Pierrot, mais moi je suis de ceux qui préconisent de comprendre la technologie avant d'utiliser un framework qui rajoute une couche d'abstraction supplémentaire.
Car je trouve ta démarche très réductrice pour tout framework en général. Je ne veux pas lancer la polémique non plus, mais aujourd'hui bon nombre de programmeurs sur le marché du travail sont la plupart du temps incapables de développer sans leur framework, une vrai catastrophe. Un framework doit être utilisé pour réduire les temps de développement et les erreurs/déboggages qui en découlent pas pour ignorer ce que l'on fait.

@moijhd :

1.
function createXMLHttpRequest() {
2.try { return new XMLHttpRequest(); } catch(e) {}
3.try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch (e) {}
4.try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch (e) {}
5. try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
6.try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
7.throw new Error("This browser does not support XMLHttpRequest.");
8.return null;
}

Cette fonction en résumé va créer une instance de tous les objets qu'elle va arriver à créer (EDIT: + une erreur qui va te dire "This browser..."), or c'est pas ce que l'on souhaite. Catch en anglais veut dire attraper, ici en l'occurence intercepter l'erreur récupérable lancé par le système si celui-ci n'arrive pas à instancier l'objet défini dans l'instruction try. Donc ce qui sera éxécuté dans {  } après le catch le sera que si l'instanciation de l'objet défini dans la clause try a échoué.
Normalement si tu ne t'en sors pas avec cette explication, je te conseille de relire et d'essayer de comprendre avant de poster un code et me demander si c'est ça qu'il faut faire. merci.

à bientôt wink

Dernière modification par Jc (28-04-2011 19:30:31)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#15 28-04-2011 19:17:00

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 191

Re : Transformation XML & XSL => HTML

>>Tu as peut être raison Pierrot

tu enlèves le "peut être" et tu es 100% dans le vrai wink

lis bien les termes que tu emplois toi même : "programmeur"

un individu qui s’emmêle les pinceau dans 5 lignes de code ne peut être qualifié de "programmeur", tout au plus "bricoleur".
je ne pense pas être trop mauvais à ce jeux et moi, j'utilise JQUERY wink
c'est loin d'être réducteur, le preuve, je me suis essayé à développer un framework.
je dirai même que c'est une sage décision wink

certes, moijhd n'est peut être (même certainement pas) développeur et c'est bien pour çà que c'est la seul décision çà prendre wink

a++

Hors ligne

#16 28-04-2011 19:28:57

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 624
Site Web

Re : Transformation XML & XSL => HTML

Lit aussi ce que j'ai dit. j'ai jamais dit que c'etait réducteur d'utiliser un framework, j'ai dit que c'etait réducteur pour un framework que de l'utiliser pour éviter d'apprendre ce que l'on fait.
Je ne suis pas de ceux qui veulent réinventer la roue.
Si tu veux une critique à propos des frameworks, je vais te faire plaisir, je vais t'en donner une : le jour où le framework concerné passe aux oubliettes et n'est plus maintenu, c'est autant d'applications qui sont basées dessus qui passent à la trappe et qui doivent être redéveloppées. big_smile

Dernière modification par Jc (28-04-2011 19:29:20)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#17 28-04-2011 19:36:43

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 191

Re : Transformation XML & XSL => HTML

>>le jour où le framework concerné passe aux oubliettes et n'est plus maintenu, c'est autant d'applications qui sont basées dessus qui passent à la trappe et qui doivent être re-développées.

vrai, c'est pour çà que c'est une vrai décision wink
et je ne pense pas qu'un framework comme JQUERY tombera aux oubliettes wink

a++

Hors ligne

#18 28-04-2011 19:42:02

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 624
Site Web

Re : Transformation XML & XSL => HTML

Je suis d'accord avec toi sur ce point aussi.
Je vais faire mon MK wink : c'est un forum de débutants et comme tout débutant on doit apprendre. Ex: On commence par apprendre à marcher, ensuite on apprend à courrir, et puis le jour où on souhaite aller plus vite, ou qu'on en a marre de marcher, on prends une voiture. La mauvaise raison de prendre une voiture serait de le faire pour éviter d'apprendre à marcher. Ben c'est pareil avec les frameworks^^ big_smile


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#19 28-04-2011 19:46:50

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 191

Re : Transformation XML & XSL => HTML

enfin, apprendre à marcher avec un youpala, c'est plus facile wink
et puis, pourquoi utiliser MySql, autant utiliser des fichier textes big_smile:D
je dirai même qu'un peu d'assembler n'est pas mal non plus big_smile:D

enfin, moi ché pas, chui même pas développeur big_smile:D

a++

Hors ligne

#20 28-04-2011 19:50:18

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 624
Site Web

Re : Transformation XML & XSL => HTML

big_smile:D:D
Tu m'éclates smile lol
Demain je vais aller au bureau avec un youpala, et si on me demande pourquoi, je vais leur répondre que j'ai décidé de me remettre au jquery mais que je souhaite y aller progressivement lol

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#21 28-04-2011 19:52:20

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Re : Transformation XML & XSL => HTML

Bon, le but est d'utiliser le meilleur ActiveX si besoin et si possible. Je veux donc chercher à créer les objets dans l'ordre que je les ai donné. Cependant, dès que j'arrive à en créer un, les précédents n'ayant pas été créés, je veux le retourner et ne pas faire les autres try.

Je vais essayer de résumé ce qui me semble pertinent dans mon cas.

On essaie de réaliser le contenu d'un bloc try. Si cela échoue, on effectue les instructions du bloc catch associé (qui connait la raison de l'erreur).

L'utilisation de throw entraine l'arret du script. Je ne peux donc l'utiliser qu'à la fin du script puisque je veux essayer tous les cas jusqu'à réalisation.

Return met fin à la fonction en sortant le resultat courant. Il n'est atteint qu'en cas de succès de la création.

Dans ces conditions, si l'un des try se réalise, alors on sort l'objet courant créé, la création des précédents ayant échoué. Enfin, si aucun ne convient, l'instruction throw met fin au script.

Du coup, je ne vois pas pourquoi "Cette fonction en résumé va créer une instance de tous les objets qu'elle va arriver à créer". Je ne vois pas à côté de quoi je passe.

Dernière modification par moijhd (28-04-2011 19:56:33)

Hors ligne

#22 28-04-2011 19:55:00

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 191

Re : Transformation XML & XSL => HTML

qui te parle de progressivité ?
justement, l'utilisation d'un framework est un bond wink
donc, tu passe directement dans la voiture sans savoir marcher wink:D:D
a++

Hors ligne

#23 28-04-2011 20:00:04

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 624
Site Web

Re : Transformation XML & XSL => HTML

compare avec ça et dit moi si tu as compris la différence


function createXMLHttpRequest() {
   try { return new XMLHttpRequest(); } catch(e) {
        try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {
             try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch (e) {return false;}
       }
      return false;
  }
}
 

POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#24 28-04-2011 20:02:16

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 624
Site Web

Re : Transformation XML & XSL => HTML

Sinon

1) new XMLHttpRequest();
2) new ActiveXObject("Msxml2.XMLHTTP");
3) new ActiveXObject("Microsoft.XMLHTTP");

est largement suffisant aujourd'hui

De plus l'utilisation de throw ne provoque pas l'arrêt du script mais se contente juste de lancer une exception personnalisée

Dernière modification par Jc (28-04-2011 20:04:19)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#25 28-04-2011 20:05:18

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 191

Re : Transformation XML & XSL => HTML

bon, j'vous aide wink
ca devrai fonctionner comme çà wink


function ajax_Obj(){
  var Ajax_object;
  if(window.XMLHttpRequest) Ajax_object = new XMLHttpRequest();
  else if (window.ActiveXObject) {
    try {
      Ajax_object = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
      try {
        Ajax_object = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e1) {
        Ajax_object = null;
      }
    }
  }
  else  {
    alert("AJAX impossible sur votre navigateur");
  }
  return Ajax_object;
}
 


a++

Hors ligne

Pied de page des forums