[XSLT] Supprimer certains attributes xmlns
Bonjour,
J'ai un problème pour purger un fichier XML de certain namespace.
Voici Mon fichier
Code:
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:
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:
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> |