Bonjour,
J'ai un problème pour purger un fichier XML de certain namespace.
Voici Mon fichier
Je voudrais pouvoir créer une recopie de ce fichier en supprimant l'attribut xmlns="http://www.toto.fr/toto/XML" de l'élément Root mais sans supprimer le namespace xmlns:my="http://www.tata.fr/modele/xml" définie dans les sous éléments.
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="UTF-8"?> <Root xmlns="http://www.toto.fr/toto/XML"> <Private type="Voiture">1000</Private> <Private type="Moto">50<my:Modele xmlns:my="http://www.tata.fr/modele/xml" max="40"> <Element1 xmlns:my="http://www.tata.fr/modele/xml"> <SousElement desc="a" id="1" name="fbvdfg" ref="G401"/> <SousElement desc="b" id="2" name="fgg" ref="G402"/> <SousElement desc="c" id="3" name="bbhfg" ref="G403"/> <SousElement desc="d" id="4" name="sfd" ref="G404"/> </Element1> <Element2> <SousElment desc="d" id="1" name="gffgg" ref="G401"/> <SousElment desc="e" id="2" name="dgd" ref="G402"/> <SousElment desc="f" id="3" name="dg" ref="G403"/> <SousElment desc="g" id="4" name="dfg" ref="G404"/> </Element2> </my:Modele> </Private> <Private type="Camion">3</Private> <Garage numero="1"> <Atelier desc="atelier de mécanique" nbouvrier="6"> <Outils desc="Pont" name="tyu"/> <Outils desc="Pont" name="fgdsfr"/> </Atelier> </Garage> </Root>
Je connais le namespace à supprimer mais pas le namespace à garder. POur résumer je voudrais garder les namespace différent de "http://www.toto.fr/toto/XML"
J'ai écris cette feuille de style mais dans le résultat tous les attributs xmlns ont disparu.
Le résultat que je voudrais obtenir :
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"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:gar="http://www.toto.fr/toto/XML" exclude-result-prefixes="gar"> <xsl:template match="/"> <xsl:apply-templates select="gar:*"/> </xsl:template> <xsl:template match="gar:*"> <xsl:choose> <xsl:when test="namespace-uri() = 'http://www.toto.fr/toto/XML'"> <xsl:element name="{local-name()}"> <xsl:apply-templates select="@*|node()"/> </xsl:element> </xsl:when> <xsl:otherwise> <xsl:copy-of select="current()"></xsl:copy-of> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="@*"> <xsl:attribute name="{local-name()}"> <xsl:value-of select="."/> </xsl:attribute> </xsl:template> </xsl:stylesheet>
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 <?xml version="1.0" encoding="UTF-8"?> <Root> <Private type="Voiture">1000</Private> <Private type="Moto">50<my:Modele xmlns:my="http://www.tata.fr/modele/xml" max="40"> <Element1 xmlns:my="http://www.tata.fr/modele/xml"> <SousElement desc="a" id="1" name="fbvdfg" ref="G401"/> <SousElement desc="b" id="2" name="fgg" ref="G402"/> <SousElement desc="c" id="3" name="bbhfg" ref="G403"/> <SousElement desc="d" id="4" name="sfd" ref="G404"/> </Element1> <Element2> <SousElment desc="d" id="1" name="gffgg" ref="G401"/> <SousElment desc="e" id="2" name="dgd" ref="G402"/> <SousElment desc="f" id="3" name="dg" ref="G403"/> <SousElment desc="g" id="4" name="dfg" ref="G404"/> </Element2> </my:Modele> </Private> <Private type="Camion">3</Private> <Garage numero="1"> <Atelier desc="atelier de mécanique" nbouvrier="6"> <Outils desc="Pont" name="tyu"/> <Outils desc="Pont" name="fgdsfr"/> </Atelier> </Garage> </Root>
Partager