Bonjour,
J'ai besoin de modifier un fichier XML. En faisant un tour sur Google j'ai cru comprendre que le plus simple pour moi serait d'utiliser un script XSLT.
Je ne connais pas du tout ce langage et j'avance à tatons. J'aurais donc besoin d'un peu d'aide.
Voici mon problème : j'ai un fichier XMLdont je dois supprimer certaines nodes vides (je dis bien certaines, car j'ai besoin que certains noeuds soient vides).
J'ai le fichier XMLsuivant :
Je voudrais vérifier si <tag3child1> et <tag3child2> sont vides, et si c'est le cas les supprimer.
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"?> <root> <tag1> un peu de texte </tag1> <tag2> encore du texte </tag2> <tag3> <tag3child1>test</tag3child1> <tag3child2/> </tag3> </root>
J'utilise donc le script XSLT suivant :
Le résultat attendu est donc :
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 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="tag3child1|tag3child2"> <xsl:if test="normalize-space(string(.)) != ''"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> <xsl:copy> </xsl:if> </xsl:template> </xsl:stylesheet>
Or je me retrouve avec ça :
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"?> <root> <tag1> un peu de texte </tag1> <tag2> encore du texte </tag2> <tag3> <!-- tag3child1 n'est pas vide, et ne doit donc pas être supprimée, à l'inverse de tag3child2 --> <tag3child1>test</tag3child1> </tag3> </root>
Je ne comprend pas d'où vient mon erreur.
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"?> <root> <tag1> un peu de texte </tag1> <tag2> encore du texte </tag2> <tag3> <!-- tag3child2 est bien supprimée, mais j'ai une balise vide tag3child1 qui apparait --> <tag3child1>test<tag3child1></tag3child1></tag3child1> </tag3> </root>
Une piste ?
Par avance merci
Partager