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 :

transformer mon fichier xml en .txt avec pour séparateur des pipes


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Etudiant en alternance
    Inscrit en
    Février 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en alternance

    Informations forums :
    Inscription : Février 2011
    Messages : 75
    Par défaut transformer mon fichier xml en .txt avec pour séparateur des pipes
    Bonjour,

    Débutant dans le xsl je voudrais savoir comment faire pour transformer mon fichier xml qui est assez long en fichier texte avec pour séparateur un pipe et d retour à la ligne pour une nouvelle entrer

    Je vous remercie d'avance

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    En lisant des petits tutoriels sur XSLT, en essayant des choses et d'autres, et en venant nous montrer ce que tu obtiens, pour demander comment améliorer.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Etudiant en alternance
    Inscrit en
    Février 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en alternance

    Informations forums :
    Inscription : Février 2011
    Messages : 75
    Par défaut xsl
    j'ai pu donc avancer sur mes recherches et j'ai pu créer mon xsl

    monxsl.xsl
    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
    <?xml version="1.0" encoding="ISO-8859-1"?> 
    	<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    		<xsl:output method="html" encoding="ISO-8859-1" doctype-public="-//W3C//DTD HTML 4.01//EN" doctype-system="http://www.w3.org/TR/html4/strict.dtd" indent="yes" />
     
     <xsl:output method="text"/>
     
     <xsl:variable name="newLine" select="translate('&#xa;','','')"/> 
     
     
     <xsl:template match="submits">
     
      <xsl:value-of select="$newLine" />
      <xsl:apply-templates select="*" />
     </xsl:template>
     
     <xsl:template match="submit">
       <!-- Recuperation des informations du fichier XML -->
       <xsl:variable name="submit-id" select="./submit-id" />
       <xsl:variable name="submit-date" select="./submit-date" />
      <pre> <xsl:variable name="response" select="./response"/></pre>
     
     
       <!-- Generation du contenu -->
       <xsl:value-of select="$submit-id"/>
       <xsl:text>|</xsl:text>
       <xsl:value-of select="$submit-date"/>
       <xsl:text>|</xsl:text>
       <xsl:value-of select="$response"/>
       <xsl:text>¤¤</xsl:text>
      <!-- <xsl:value-of select="$newLine" />-->
     </xsl:template>
     
    </xsl:stylesheet>
    et voici mon xml

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="formulaire_xsl.xsl"?>
    <submits>
    <submit>
    <submit-id>2</submit-id>
    <submit-date>15/02/12</submit-date>
    <submit-ip/>
    <questions>
    <question>
    <question-title><![CDATA[Raison Sociale ]]></question-title>
    <responses>
    <response><![CDATA[Test]]></response>
    </responses>
    </question>
    <question>
    <question-title><![CDATA[Votre société est une : ]]></question-title>
    <responses>
    <response><![CDATA[EF]]></response>
    </responses>
    </question>
    <question>
    <question-title><![CDATA[Forme Juridique entreprise française]]></question-title>
    <responses>
    <response><![CDATA[1200]]></response>
    </responses>
    </submit>
    </submits>
    Mon problème est que je n'arrive pas à afficher le contenu de mes réponses

    Je vous remercie d'avance

  4. #4
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    C'est normal car dans ton XSL tu considères que l'élément "response" est un fils de "submit", au même titre que "submit-id" ou "submit-date" or ce n'est pas du tout le cas dans ton XML :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="formulaire_xsl.xsl"?>
    <submits>
    	<submit>
    		<submit-id>2</submit-id>
    		<submit-date>15/02/12</submit-date>
    		<submit-ip />
    		<questions>
    			<question>
    				<question-title><![CDATA[Raison Sociale ]]></question-title>
    				<responses>
    					<response><![CDATA[Test]]></response>
    				</responses>
    			</question>
    			<question>
    				<question-title><![CDATA[Votre société est une : ]]></question-title>
    				<responses>
    					<response><![CDATA[EF]]></response>
    				</responses>
    			</question>
    			<question>
    				<question-title><![CDATA[Forme Juridique entreprise française]]></question-title>
    				<responses>
    					<response><![CDATA[1200]]></response>
    				</responses>
    			</question>
    		</questions>
    	</submit>
    </submits>
    Tu vas devoir faire un <apply-templates select="descendant::response"/> ou bien un <xsl:for-each select="descendant::response"> pour parcourir tous les éléments response.

  5. #5
    Membre confirmé
    Homme Profil pro
    Etudiant en alternance
    Inscrit en
    Février 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en alternance

    Informations forums :
    Inscription : Février 2011
    Messages : 75
    Par défaut xsl
    Merci pour ta réponse elle m'a permis de bien avancée
    donc j'ai refait mon 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="html" media-type="text/html; charset=ISO-8859-1"/>
      <xsl:template match="/">
        <html>
          <head>
            <title>xsl
            </title>
          </head>
    		<body>
    			<xsl:for-each select="/form/submits/submit">
    				<xsl:text>|</xsl:text>
    					<xsl:value-of select="submit-id"/>
    				<xsl:text>|</xsl:text>
    					<xsl:value-of select="submit-date"/>
    				<xsl:text>|</xsl:text>
    			</xsl:for-each>	
    			<xsl:for-each select="/form/submits/submit/questions/question">
    				<xsl:text>|</xsl:text>
    					<xsl:value-of select="responses"/>
    				</xsl:for-each>		
    		</body>
        </html>
      </xsl:template>
    </xsl:stylesheet>
    Maintenant mon problème c'est que cela m'affiche d'abord tous les submit-id puis les submit-date et ensuite toutes les réponses, alors que moi je voudrais avoir submit-id| submit-date| responses | retour à la ligne submit-id| submit-date| responses | retour à la ligne
    submit-id| submit-date| responses | etc etc...

    Je vous remercie d'avance

  6. #6
    Membre confirmé
    Homme Profil pro
    Etudiant en alternance
    Inscrit en
    Février 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en alternance

    Informations forums :
    Inscription : Février 2011
    Messages : 75
    Par défaut xsl
    ah c'est bon j'ai trouvé
    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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="html" media-type="text/html; charset=ISO-8859-1"/>
      <xsl:template match="/">
        <html>
          <head>
            <title>
            </title>
          </head>
    		<body>
    			<xsl:for-each select="/form/submits/submit">
    				<xsl:text>|</xsl:text>
    					<xsl:value-of select="submit-date"/>	
    				<xsl:text>|</xsl:text>
    					<xsl:value-of select="submit-id"/>
    				<xsl:text>|</xsl:text>
    					<xsl:for-each select="/form/submits/submit/questions/question">
    						<xsl:text>|</xsl:text>
    							<xsl:value-of select="responses"/>
    					</xsl:for-each>	
    			</xsl:for-each>					
    		</body>
        </html>
      </xsl:template>
    </xsl:stylesheet>

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/04/2014, 14h58
  2. Format date pour mon fichier xml qui deviendra un txt
    Par fano97one dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/03/2012, 16h52
  3. Réponses: 2
    Dernier message: 03/04/2007, 14h14
  4. [SimpleXML] Comment faire pour transformer un fichier XML en PHP ?
    Par magic8392 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 23/09/2005, 16h22

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