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 :

[XSLT] Problème de ligne vide dans le flux de sortie


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [XSLT] Problème de ligne vide dans le flux de sortie
    Bonjour,

    J'effectue une transformation XSL en effectuant une sortie en XML.
    Ma feuille XSL parcoure les noeuds de mon fichier XML. Pour certains noeud j'effectue un traitement (création d'une balise dans le fihier de sortie) et pour d'autre je ne fais rien.

    Mon fichier de sortie se construit correctement, cepandant pour chaque noeud rencontré pour lequel je n'effectue pas de traitement je retrouve une ligne vide dans mon fichier de sortie. Mon souci se situe ici.

    Comment faire pour ne pas avoir ces lignes inutiles ?

    Merci de votre aide.
    Guillaume

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Février 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Précisions
    Bonjour,

    afin de d'illustrer mon problème et devous permettre de reproduire mon problème je vous joins
    - le xml source,
    - la feuille xsl,
    - le résultat obtenu,
    - le résultat attendu.

    J'espère que vous pourrez m'aider.

    Le XML source:
    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
    <?xml version="1.0"?>
    <auteurs>
    	<auteur nom="toto">
    		<article id="1" titre="article1"/>
    		<article id="1" titre="article2"/>
    		<article id="2" titre="article3"/>
    		<auteur prenom="titi">
    			<article id="1" titre="article4"/>
    			<article id="2" titre="article5"/>
    		</auteur>
    	</auteur>
    	<auteur nom="truc">
    		<article id="1" titre="articleA"/>
    		<article id="2" titre="articleB"/>
    		<article id="1" titre="articleC"/>
    		<auteur prenom="muche">
    			<article id="2" titre="articleD"/>
    			<article id="1" titre="articleE"/>
    		</auteur>
    	</auteur>
    </auteurs>
    Le XSL pour la transformation:
    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
    <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="xml" indent="no"/>
    		<!-- First create the document root node -->
    		<xsl:template match="/">
    			<xsl:element name="ARTICLES">
    				<xsl:apply-templates/>
    			</xsl:element>
    		</xsl:template>
    		<xsl:template match="auteurs/auteur">
    			<xsl:element name="TITRES">
    				<xsl:attribute name="auteur">A</xsl:attribute>
    				<xsl:apply-templates/>
    			</xsl:element>
    		</xsl:template>
    		<xsl:template match="auteur/auteur">
    				<xsl:apply-templates/>
    		</xsl:template>	
    		<xsl:template match="article">
    			<xsl:choose>
    			<xsl:when test="./@id = '1'">
    				<xsl:element name="auteur">
    					<xsl:value-of select="@titre"/>
    				</xsl:element>
    			</xsl:when>
    			<xsl:otherwise>
    			</xsl:otherwise>
    			</xsl:choose>
    		</xsl:template>
    </xsl:transform>
    Le XML obtenu:
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <ARTICLES>
    	<TITRES auteur="A">
    		<auteur>article1</auteur>
    		<auteur>article2</auteur>
     
     
    			<auteur>article4</auteur>
     
     
    	</TITRES>
    	<TITRES auteur="A">
    		<auteur>articleA</auteur>
     
    		<auteur>articleC</auteur>
     
     
    			<auteur>articleE</auteur>
     
    	</TITRES>
    </ARTICLES>
    Le XML attendu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="UTF-8"?>
    <ARTICLES>
    	<TITRES auteur="A">
    		<auteur>article1</auteur>
    		<auteur>article2</auteur>
    		<auteur>article4</auteur>
    	</TITRES>
    	<TITRES auteur="A">
    		<auteur>articleA</auteur>
    		<auteur>articleC</auteur>
    		<auteur>articleE</auteur>
    	</TITRES>
    </ARTICLES>
    Bonne journée,
    Guillaume

  3. #3
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    essaye avec le xsl 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
     
    <?xml version="1.0" encoding="ISO-8859-15"?>
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:output indent="yes" method="xml"/>
    <xsl:strip-space elements="*"/>
      <xsl:template match="/">
        <xsl:element name="ARTICLES">
          <xsl:apply-templates/>
        </xsl:element>
      </xsl:template>
      <xsl:template match="auteurs/auteur">
        <xsl:element name="TITRES">
          <xsl:attribute name="auteur">A</xsl:attribute>
          <xsl:apply-templates/>
        </xsl:element>
      </xsl:template>
      <xsl:template match="auteur/auteur">
        <xsl:apply-templates/>
      </xsl:template> <xsl:template match="article">
        <xsl:choose>
          <xsl:when test="./@id = '1'">
            <xsl:element name="auteur">
              <xsl:value-of select="@titre"/>
            </xsl:element>
          </xsl:when>
          <xsl:otherwise/>
        </xsl:choose>
      </xsl:template>
    </xsl:transform>
    je te laisse regarder la différence au niveau du output

  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 : 48
    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
    Un conseil evité les syntaxes

    Cela déclenche tout un tas d'appel à des templates par defauts qui peuvent avoir des conséquencers désagreable. Il vaut toujours mieux saisir leur attribut select quand c'est possible

  5. #5
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    juste pour rebondir sur la réponse de Erwy: on peux aussi modifier les templates par défaut si on ne connait pas la struture du fichier xml (et donc le select à réaliser)

Discussions similaires

  1. [Batch] Imprimer une ligne vide dans un fichier de sortie avec echo
    Par THKKK dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 19/05/2010, 22h11
  2. [VBA-E] Inserer une ligne vide dans Excel
    Par monsurf dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/07/2006, 17h48
  3. Réponses: 4
    Dernier message: 15/06/2006, 14h31
  4. Ligne vide dans control zone de liste
    Par sunvialley dans le forum Access
    Réponses: 13
    Dernier message: 10/05/2006, 18h26
  5. Création non contrôlée de lignes vides dans une Hash
    Par Ashish_Kebab dans le forum Langage
    Réponses: 1
    Dernier message: 02/04/2006, 20h03

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