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 :

[débutant] conversion XML en CSV


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Points : 106
    Points
    106
    Par défaut [débutant] conversion XML en CSV
    Bonjour à toutes & à tous,

    étant completement novice en XSL, je me permet de poster ce message.
    Je ne sais meme pas si ma démarche est correct.
    Je souhaite convertir un fichier XML (nommé : RBL.xml) suivant :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <ROOT xmlns:exp="urn:n1">
        <MANUAL_DOMAIN_WL>
          <Entries>
            <Entry_0>
              <DateToExpire exp:type="base64">AAAAAAAAAAAAAAAAAAAAAA==</DateToExpire>
              <Address>1miniface.com</Address>
            </Entry_0>
            <Entry_1>
              <DateToExpire exp:type="base64">AAAAAAAAAAAAAAAAAAAAAA==</DateToExpire>
              <Address>3six9.com.fr</Address>
            </Entry_1>
            .................
            .................
            <Entry_438>
              <DateToExpire exp:type="base64">AAAAAAAAAAAAAAAAAAAAAA==</DateToExpire>
              <Address>zhr.fr</Address>
            </Entry_438>
          </Entries>
        </MANUAL_EMAIL_ADDRESS_BL>
        <MANUAL_EMAIL_ADDRESS_WL>
          <Entries>
            <Entry_0>
              <DateToExpire exp:type="base64">AAAAAAAAAAAAAAAAAAAAAA==</DateToExpire>
              <Address>2s.conseil@wanadoo.fr</Address>
            </Entry_0>
            <Entry_1>
              <DateToExpire exp:type="base64">AAAAAAAAAAAAAAAAAAAAAA==</DateToExpire>
              <Address>3x3@wanadoo.fr</Address>
            </Entry_1>
            ....................
            ....................
            <Entry_352>
              <DateToExpire exp:type="base64">AAAAAAAAAAAAAAAAAAAAAA==</DateToExpire>
              <Address>zebreh@wanadoo.fr</Address>
            </Entry_352>
          </Entries>
        </MANUAL_EMAIL_ADDRESS_WL>
    </ROOT>
    en fichier CSV du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    1miniface.com
    3six9.com.fr
    .................
    .................
    zhr.fr
     
    et
    2s.conseil@wanadoo.fr
    3x3@wanadoo.fr
    zebreh@wanadoo.fr

    Pour cela, a partir d'un serveur web, je créé une page php (nommé executeXslt.php) de type:
    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
     
    <?
    // Crée le processeur XSLT
    $xh = xslt_create();
    xslt_set_base ($xh, 'file://' . getcwd () . '/');
     
    // Traite le document, puis affiche le résultat
    $result = xslt_process($xh, 'RBL.xml', 'xmlToCsv.xsl');
    if (!$result)
      echo ("Erreur XSLT ...");
    else
      echo ($result);
     
    // Détruit le processeur XSLT
    xslt_free($xh);
    ?>
    qui va utiliser la page XmlToCsv.xsl suivante:
    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
    <?xml version="1.0"?>
    <xsl:stylesheet version = "1.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
     
    <xsl:output method="text"/>
     
    <xsl:template match="/" >
    	<xsl:apply-templates select="//Contexte"/>
    </xsl:template>
     
    <xsl:template match="Contexte" >
    ???????????
    </xsl:template>
     
     
    </xsl:stylesheet>
    Et bien entendu, je ne sais pas du tout par quoi remplacer les ??????. (je ne pratique pas du tout le XSL).

    Une ame charitable pourrais t'elle m'offrir un début de solution ?? Merci d'avance.

  2. #2
    Membre actif Avatar de amadoulamine1
    Inscrit en
    Avril 2005
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 260
    Points : 270
    Points
    270
    Par défaut
    Salut
    essaie avec ca je ne sais pas si c'est ce que tu veux mais c'est un début.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <xsl:template match="/" >
    	<xsl:apply-templates />
    </xsl:template>
     
    <xsl:template match="Address" >
    	<xsl:value-of select="text()"/>
            <xsl:text disable-output-escaping="yes">
    </xsl:text>
    </xsl:template>
     <xsl:template match="DateToExpire" >	
    </xsl:template>
     
    </xsl:stylesheet>
    PS: le document xml que tu as donné en exmeple est mal formé!
    Ne testez jamais une erreur que vous ne savez pas gérer.
    de ne pas oublier

  3. #3
    Membre régulier

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Points : 106
    Points
    106
    Par défaut
    Amadoulamine1, merci de ton aide!!!
    En effet, avec ton bout de code, le résultat se raproche déjà plus de ce que je souhaite.
    voila en gros ce que j'obtient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1miniface.com 3six9.com.fr ...... zhr.fr 2s.conseil@wanadoo.fr 3x3@wanadoo.fr ....... zebreh@wanadoo.fr
    Cependant, comment puis-je me retrouver avec un fichier csv ???
    en effet, ce résultat est affiché en page web. (via la commande echo dans le fichier executeXslt.php)

    PS: - Oui il y a une erreur de structure dans l'extrait du fichier XML que j'ai posté. Le vrai fichier ne contient bien évidement pas cette erreur!
    PS² : je n'ai pas testé, mais tu me confirmes que le est un retour chariot ?

    Merci d'avance!

  4. #4
    Membre actif Avatar de amadoulamine1
    Inscrit en
    Avril 2005
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 260
    Points : 270
    Points
    270
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:text disable-output-escaping="yes">
    </xsl:text>
    est bien un retour chariot
    est ce que tu l'as ajouté?
    Si c'est ajouté en page web remplace plutot le code ici haut par un
    Ne testez jamais une erreur que vous ne savez pas gérer.
    de ne pas oublier

  5. #5
    Membre régulier

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Points : 106
    Points
    106
    Par défaut
    Ui j'ai bien mis le dans le code xls.
    J'ai mal exprimmé ma question : actuellement je me retrouve avec un affichage du résultat dans une page web. A la place, je souhaiterai pouvoir récupérer un fichier .csv (genre une fenetre "enregistrer sous" apparait, à la place du résultat qui s'affiche dans le navigateur).

  6. #6
    Membre actif Avatar de amadoulamine1
    Inscrit en
    Avril 2005
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 260
    Points : 270
    Points
    270
    Par défaut
    la je suis désolé car je ne saurai te répondre car je ne sai pas comment faire.
    Dirige toi plutot dans le forum PHP je suis presque sur que tu auras ta reponse
    Ne testez jamais une erreur que vous ne savez pas gérer.
    de ne pas oublier

  7. #7
    Membre régulier

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Points : 106
    Points
    106
    Par défaut
    Afficher une boite de dial "enregistrer sous" c'est presque du zele, maius je me doutais bien que c'est plus orienté php.
    On peut considérer que mon prob est résolu!
    Merci encore de ta précieuse aide, bonne continuation!

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Ca dépend de l'entête HTTP que le serveur renvoie au navigateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-Disposition: attachment; filename="test.csv"');

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

Discussions similaires

  1. [XML] Conversion XML en CSV
    Par wperezrobles dans le forum Langage
    Réponses: 6
    Dernier message: 07/12/2009, 11h12
  2. [XSLT] Conversion universelle xml en csv
    Par titi31 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 06/09/2007, 09h29
  3. [xml]Conversion d'une structure xml en csv
    Par cchatel2000 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 01/08/2005, 16h00
  4. Réponses: 3
    Dernier message: 26/05/2004, 23h03
  5. [débutant] conversion int en hexa
    Par sergoid dans le forum C++Builder
    Réponses: 6
    Dernier message: 16/05/2003, 11h11

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