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

XML/XSL et SOAP Discussion :

Supprimer les nœuds vides (sous noeuds et parents) d'un fichier XML


Sujet :

XML/XSL et SOAP

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2013
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Supprimer les nœuds vides (sous noeuds et parents) d'un fichier XML
    Bonjour,
    Je veux utiliser XSLT pour supprimer les éléments vides d'un fichier XML.

    En effet, j'arrive à supprimer les balises vides, mais j'ai toujours les noeuds parents même si les sous balises sont toutes vides.

    Voici le code que j'utilise:

    --------------------------------------------------------------------
    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:template match="*">
    	<xsl:choose>
    		<xsl:when test="* | text ()">
    			<xsl:copy>
    				<xsl:apply-templates select="@*|node()"/>
    			</xsl:copy>
    		</xsl:when>
    		<xsl:otherwise>
    			<xsl:apply-templates select="node()"/>
    		</xsl:otherwise>
    	</xsl:choose>
    </xsl:template>
     </xsl:stylesheet>
    --------------------------------------------------------------------
    Voici un extrait du résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        <aa>DE</aa>
        <bb>DE</bb>
        <cc>
          <cccc>
     
     
     
          </cccc>
        </cc>
       <ee>DE</ee>
    alors que je veux avoir ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <aa>DE</aa>
    <bb>DE</bb>
    <ee>DE</ee>
    Est ce que vous pouvez m'aider SVP! j'en ai vraiment besoin.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Tu sais, test="text()" renverra vrai même si l'élément ne contient que des blancs : les blancs c'est aussi du texte.
    les seuls cas où un peut renvoyer faux c'est <a></a> ou <a/> ou <a machin="bidule"/>Pour virer les blancs, il faut utiliser normalize-space() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <when test="* | text()[normalize-space(.) != '']"

    Et pour virer les parents vides, t'as pas trop le choix : tu dois détecter qu'un élément ne contient rien avant de décider de le copier.

    Le test doit donc porter sur l'intégralité du texte qui est contenu avec ses sous-balises (si ses balises contiennent du texte, elles sont pas vides et donc lui non plus. Si elles ne contiennent pas de texte, elles doivent être supprimées et le seront avec lui) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:when test="normalize-space(.) != ''">
    et bien sûr pas de <xsl:otherwise>, puisque s'il est vide, alors son contenu aussi.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/12/2006, 12h00
  2. [XML] Supprimer les balises vides
    Par junior6 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 20/09/2006, 09h34
  3. Supprimer les lignes vides d'un document Word
    Par Jerfa dans le forum VBA Word
    Réponses: 4
    Dernier message: 28/08/2006, 16h12
  4. Réponses: 2
    Dernier message: 04/05/2006, 13h10
  5. supprimer les lignes vides?
    Par VinnieMc dans le forum Langage
    Réponses: 5
    Dernier message: 27/02/2006, 14h01

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