Bonjour,

J'ai un problème pour purger un fichier XML de certain namespace.

Voici Mon fichier

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 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.

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.
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>
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
 
<?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>