Bonjour,

J'ai un fichier Xml qui se présente sous cette forme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
<article>
 
<phrase>
 
<p>Le chat est noir</p>
</phrase>
 
<phrase>
 
<p></p>
</phrase>
 
</article>


Je souhaiterai supprimer les noeuds vides. En effet, j'utilise la fonction
Xsl:choose
pour supprimer les balises sans texte et cela me donne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
<article>
 
<phrase>
 
<p>Le chat est noir</p>
</phrase>
 
<phrase>
 
 
</phrase>
 
</article>
Le problème est que je n'arrive pas à supprimer les noeuds parents vides qui sont ici "<phrase>"

Voilà le code XSL pour engendrer 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
<xsl:template match="*">
            <xsl:choose>
 
                <!--SI la balise contient du texte on recopie les noeuds-->
                <xsl:when test="* | text ()">
                    <xsl:copy>
 
                        <xsl:apply-templates select="@*|node()"/>
 
                    </xsl:copy>
                </xsl:when>
 
                <!--Sinon-->
              <xsl:otherwise>
                  <xsl:comment>NETTOYAGE BALISE VIDE <xsl:apply-templates select="@*|node()"/></xsl:comment>
              </xsl:otherwise>
            </xsl:choose>
 
    </xsl:template>