IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

XSL Transformation sour mozilla


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut XSL Transformation sour mozilla
    Bonjour

    comment transformer sous mozilla un fichier xml avec l'objet dom
    j'ai essaye ceci

    /
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    / NAVIGATEUR MOZILLA //
    	// CHARGEMENT DU FICHIER XML
        var oXML = document.implementation.createDocument("", "", null);
    	oXML.load(file);
    	// CAHRGEMENT DU FICHIER XSL
        var oXSL = document.implementation.createDocument("http://www.w3.org/1999/XSL/Transform","stylesheet",null);
    	oXSL.load("commande.xsl");
    	//TRANSFORMATION EN HTML
    	var xsltProcessor = new XSLTProcessor();
    	xsltProcessor.importStylesheet(oXSL);
    	var htmlFragment = xsltProcessor.transformToFragment(oXML,document);
    	document.getElementById("root").appendChild(htmlFragment);
    mais ca ne passe pas
    merci

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    tu confond le tag et l'id je crois getelementbyid te renverra les ellement qui ont comme attribut id ->id =root alors que tu veux les elements de la racine root ,de + attention je doute de l'utilisation du dom DHTML(getelementbyid) sur du XML
    essaye plutot de voir si la commande selectNodes qui renvois les noeuds specifié :ton_fichierxml.selectNodes(ton_chemin_en_xpath) marche sous mozilla je ne connais malheurusement que les commandes dom de ie ,donc je uis sur que mozilla peut faire pareil mais comment?....

  3. #3
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    ici getelementbyid ne correspond pas au fichier xml mais au nom du dib

    http://www.mozilla.org/projects/xslt/
    http://www.tellaw.org/xsl/article25.htm

    voici un exemple de son utilisation

    sur ie pour transformet un fichier xsl on fait ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // NAVIGATEUR INTERNET EXPLORER
    	//CHARGEMENT DU FICHIER XML
    		    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    			xmlDoc.load(file);
    	//CHARGEMENT DU FICHIER XSL
    			var xsl = new ActiveXObject("Microsoft.XMLDOM");
                xsl.async = false;
                xsl.load("commande.xsl");
         //TRANSFORMATION EN HTML
    			document.write(xmlDoc.transformNode(xsl))

  4. #4
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Citation Envoyé par bolo
    ici getelementbyid ne correspond pas au fichier xml mais au nom du dib


    [/code]
    de la div????


    //TRANSFORMATION EN HTML
    document.write(xmlDoc.transformNode(xsl))
    on preferrera un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("root").innerHTML=xmlDoc.transformNode(xsl)

  5. #5
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    oui du div , mais la je te parlais du code sous mozilla , sous Ie ca fonctionne tres bien avec le code que j'ai mis plus haut

    dans le lien que je t'ai donné plus haut du , tu as du voir c ainsi qu'il procède


    http://www.mozilla.org/projects/xslt/
    http://www.tellaw.org/xsl/article25.htm

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    document.getElementById("dsoTable").appendChild(htmlFragment
    (...)
    <div id="dsoTable"></div>

  6. #6
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    j'ai compris mais je me demandais si avec un code via le innerHTML au lieu du appendChild ca ne marcherais pas mieux

  7. #7
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    Comment tu l'utilse avec innerHTML

    mais deja un truc byzarre ce qui ce passe c quand je teste ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Untitled Document</title>
    <script language="javascript">
    alert(document.getElementById("bolo").innerHTML);
    </script>
    </head>
    <body>
    <div id="bolo">texte</div>
    </body>
    </html>
    sur mozilla j'ai aucun alert et sur ie j'ai ce message

    line 8 :alert(document.getElementById("bolo").innerHTML);
    objet required

  8. #8
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    essaye de mettre ta balise script apres le body pour voir

  9. #9
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    rien
    ce qui byzarre c que le code du lien que j'ai mis fonctionne bien chez moi

  10. #10
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    line 8 :alert(document.getElementById("bolo").innerHTML);
    moi c''est ca que je ne comprends pas,tu as peut etre des pb dans ton html

  11. #11
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    j'ai rajouté cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("bolo").innerHTML="tes2"
    ca me dis maintenant
    document.getElementById("") is nul or not a object

  12. #12
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    chez moi en mettant

    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
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 
     
    tansitional//EN""http://www.w3.org/TR/html4/loose.dtd"> 
    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    <title>Untitled Document</title> 
     
    </head> 
    <body> 
    <div id="bolo">texte</div> 
    </body> 
    <script> 
    alert(document.getElementById("bolo").innerHTML); 
    </script> 
    </html>
    sois ie ca marche

  13. #13
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    alors j'ai fais comme tu as fais 8)

    mon texte change correctement tant que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("example").innerHTML ="totoaa";
    se trouve avant
    quand j'essaye ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var oXML = document.implementation.createDocument("", "", null);
       oXML.load(file);
       document.getElementById("example").innerHTML ="totoaa";
    le div ne change pas

  14. #14
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    donc tu as un pepin sur ton load ou je pense sur ton file peut etre pas le bon chemin d'indiqué?

  15. #15
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    sur ie ca fonctionne et c'est pourtant le meme chemin

  16. #16
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oXML.addEventListener("load", loadlistenerXML, false);
    la seule difference que je vois c'est ca dans code avant le load????

  17. #17
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    ca doit etre peut un problème de mes fichiers qaund le code pas mes fichier , mes fichiers ne se charge pas

    le fichier xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="utf-8"?>
    <root>
    	<profil numeror="undefined" adreFact="undefined" adrLivraison="undefined"/>
    	<informations livraison="oui" retrait="non" magasin="Fort de France" numero="0" type="commande"/>
    	<commande>
    		<produit code="2100500" libelle="RAME PAPIER A4 80G - XEROX " qte="1"/>
    	</commande>
    </root>
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    le fichier xsl
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" indent="yes"/>
    <xsl:template match="/">
    <html>
    	<head>
    		<title></title>
    	</head>
    	<body>
    	<table>
    		<tbody>
    			<tr>
    				<th> Numéro Client :<xsl:value-of select="/root/profil/@numero"/></th>
    			</tr>
    			<tr>
    				<th>Adresse de facturation :<br/><xsl:value-of select="/root/profil/@adreFact"/></th>
    				<th>Adresse de Livraison :<br/><xsl:value-of select="/root/profil/@adrLivraison"/></th>
    			</tr>
    		</tbody>
    	</table>
    	</body>
    	<br/>
    	<table>
    		<tbody>
    		<tr>
    			<th><xsl:value-of select="/root/informations/@type"/></th>
                        <xsl:choose>
    			<xsl:when test="/root/informations/@numero != '0'">
    			 <th>Numéro de bon de commade<xsl:value-of select="/root/informations/@numero"/></th>
    			</xsl:when>	
    		</xsl:choose>
    		</tr>
    			<tr>
    				<th><xsl:value-of select="/root/informations/@magasin"/></th>
    		        <xsl:choose>
    		         <xsl:when test="/root/informations/@retrait='oui'">
    		         <th>retrait au magasin</th>
    		         </xsl:when>
    		                 <xsl:otherwise>
    		         <th>livraison de la commande</th>
    		         </xsl:otherwise>
    			</xsl:choose>
    			</tr>
    		</tbody>
    	</table>
    	<br/>
    	<table>
    		<tbody>
    			<xsl:for-each select="/root/commande/produit">
    			<tr>
    			<th><xsl:value-of select="/root/commande/produit/@code"/></th>
    			<th><xsl:value-of select="/root/commande/produit/@libelle"/></th>
    			<th><xsl:value-of select="/root/commande/produit/@qte"/></th>
    			</tr>
    			</xsl:for-each>
    		</tbody>
    	</table>
    </html>
    </xsl:template>
    </xsl:stylesheet>

  18. #18
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    je vois deja un pb pour mozilla (du moins si sa reputation de + stricte qu'ie est vrai),c'est que ton xsl genere des balise html et body (dans un div ),ie tolere ce genre d'aberration mais m'etonnerai que mozilla apprecie

  19. #19
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    voici ma solution
    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
    ////////////TRANSFOMTION SOUS MOZILLA
    function transformerMozilla(file) {
            var oXML = document.implementation.createDocument("", "", null);
            var oXSL = document.implementation.createDocument("http://www.w3.org/1999/XSL/Transform","stylesheet",null);
     
            oXML.addEventListener("load", onload, false);
            oXSL.addEventListener("load", onload, false);
            oXML.load(file);
            oXSL.load("commande.xsl");
     
            function onload() {
                       var xsltProcessor = new XSLTProcessor();
    	               xsltProcessor.importStylesheet(oXSL);
    	              var htmlFragment = xsltProcessor.transformToFragment(oXML, document);
     
    	            document.getElementById("dsoTable").appendChild(htmlFragment);
     
            }
    } 
    // TRANSFORMATION SOUR IE
    function transformeIE (file){
    	// NAVIGATEUR INTERNET EXPLORER
    	//CHARGEMENT DU FICHIER XML
    		    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    			xmlDoc.load(file);
    	//CHARGEMENT DU FICHIER XSL
    			var xsl = new ActiveXObject("Microsoft.XMLDOM");
                xsl.async = false;
    			xsl.load("commande.xsl");
         //TRANSFORMATION EN HTML
    			document.write(xmlDoc.transformNode(xsl))
    }
    //CHARGEMENT DU FICHIER XML
    function importXML(file)
    {
    var moz = (typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined');
    var ie = (typeof window.ActiveXObject != 'undefined'); 
      if (moz) { 
      transformerMozilla(file);
      } else if (ie) { 
      transformeIE (file)
      }else{
      alert("Télécharger la nouvelle version de Mozilla ou Internet Explorer");
      }
    }

  20. #20
    Membre actif
    Inscrit en
    Août 2005
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 96
    Points : 205
    Points
    205
    Par défaut
    Sous Mozilla (Gecko) on ne peut pas utiliser :

    document.getElementById(id).innerHTML = DomDocumentXML.transformNode(DomDocumentXSL);

    mais apparement :

    var fragment;
    var xsltProcessor = new XSLTProcessor();
    xsltProcessor.importStylesheet(DomDocumentXSL);
    fragment = xsltProcessor.transformToFragment(DomDocumentXML,document);
    document.getElementById(id).appendChild(fragment);

    Pourtant, chez moi, ça marche toujours pas (avec Firefox)...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSL] Transformation xsl et jeu de caractères cyrillique
    Par Maximil ian dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 01/09/2005, 11h41
  2. [XSL] Transformation de document xml
    Par youbyoub dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/04/2005, 16h13
  3. [XSL] transformer ?
    Par wace dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 24/11/2004, 10h51
  4. [XSL] Transformation DATE
    Par Phenolphtaleine dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 28/06/2004, 15h57
  5. [XML/XSL] Transformation Excel
    Par Tyler Durden dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 27/11/2003, 21h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo