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 :

xml vers csv via xsl pur


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Homme Profil pro
    DPO/Datamanager
    Inscrit en
    Juin 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : DPO/Datamanager

    Informations forums :
    Inscription : Juin 2006
    Messages : 15
    Points : 12
    Points
    12
    Par défaut xml vers csv via xsl pur
    Bonjour,

    Le titre résume mon problème mais le voici détaillé:
    j'ai un fichier xml du type suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <racine>
      <formulaire>
        <champ1>val1.1</champ1>
        <champ2>val2.1</champ2>
        <champ3>val3.1</champ3>
      </formulaire>
      <formulaire>
        <champ1>val1.2</champ1>
        <champ2>val2.2</champ2>
        <champ3>val3.2</champ3>
      </formulaire>
    </racine>
    et je souhaite en faire un csv avec entête de type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    champ1;champ2;champ3
    val1.1;val2.1;val3.1
    val1.2;val2.2;val3.2
    Mon problème se pose au niveau de la récupération de l'entête qui doit être générique (la récupération; pas l'entête ;-) ). Le reste ne me pose pas problème.

    Si vous avez une idée merci de me la donner.

  2. #2
    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
    Bonjour,
    Il y a la fonction local-name() qui renvoie le nom du noeud courant.
    Donc avant de lancer le traitement pour toutes les lignes, tu lances un traitement dédié à la première ligne qui utilise ce local-name().

  3. #3
    Membre à l'essai
    Homme Profil pro
    DPO/Datamanager
    Inscrit en
    Juin 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : DPO/Datamanager

    Informations forums :
    Inscription : Juin 2006
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    merci de ta réponse rapide. Pourrais tu me donner un exemple de code pour boucler sur les champs une seule fois?

    D'avance merci

  4. #4
    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
    Et voili :p
    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
    <?xml version="1.0" ?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="text" indent="no"/> 
     
    <xsl:template match="/">
    	<xsl:call-template name="header"/>
    	<xsl:apply-templates select="//formulaire"/>
    </xsl:template>
     
    <xsl:template match="formulaire">
    	<xsl:apply-templates select="*"/><xsl:text>
    </xsl:text>
    </xsl:template>
     
    <xsl:template match="formulaire/*">
    	<xsl:value-of select="text()"/><xsl:text>;</xsl:text>
    </xsl:template>
     
    <xsl:template name="header">
    	<xsl:for-each select="/racine/formulaire[1]/*">
    		<xsl:value-of select="local-name()"/><xsl:text>;</xsl:text>
    	</xsl:for-each><xsl:text>
    </xsl:text>
    </xsl:template>
     
    </xsl:stylesheet>

  5. #5
    Membre à l'essai
    Homme Profil pro
    DPO/Datamanager
    Inscrit en
    Juin 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : DPO/Datamanager

    Informations forums :
    Inscription : Juin 2006
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Merci pour ton code.

    Je l'ai un peu adapté pour qu'il soit plus générique. Voici ce que ça donne:

    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
     
    <?xml version="1.0" ?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="text" indent="no"/>
     
    <xsl:template match="/">
    <xsl:call-template name="header"/>
    <xsl:apply-templates select="child::node()"/>
    </xsl:template>
     
    <xsl:template match="/racine/*">
    <xsl:apply-templates select="*"/><xsl:text>
    </xsl:text>
    </xsl:template>
     
    <xsl:template match="/racine/*/*">
    <xsl:value-of select="text()"/><xsl:text>;</xsl:text>
    </xsl:template>
     
    <xsl:template name="header">
    <xsl:for-each select="/racine/*[1]/*">
    <xsl:value-of select="local-name()"/><xsl:text>;</xsl:text>
    </xsl:for-each><xsl:text>
    </xsl:text>
    </xsl:template>
     
    </xsl:stylesheet>
    Merci encore

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

Discussions similaires

  1. xml vers html via xslt
    Par julien.63 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 23/10/2007, 10h16
  2. [XSLT] XML vers CSV a l'aide d'un XSL
    Par agougeon dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 02/05/2007, 14h08
  3. [XSLT]Passer du XML au CSV avec XSL
    Par tibotibotibo dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 16/03/2007, 11h12
  4. [XSLT] probleme de copie de balise de XML vers HTML via XSL
    Par Clercq dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 27/11/2006, 13h52
  5. newbie : fichier xml vers html via command-line
    Par morti dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 08/11/2005, 07h34

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