Les espaces de noms en XML sont pratiques, cependant dans certain cas, on s'en passerait bien. Surtout si, dans un même document, plusieurs parties sont définies par des espaces de noms différents.
Prenons l'exemple suivant :
<?xml version='1.0' encoding='utf-8'?> <truc1 xmlns="http://www.exemple.com/truc1/"> <test1>XXX</test1> <truc2 xmlns="http://www.exemple.com/truc1/"> <test2>XXX</test2> </truc2> <truc3 xmlns="http://www.exemple.com/truc1/"> <test3>XXX</test3> </truc3> </truc1>
Maintenant si on souhaite obtenir ce document :
<?xml version='1.0' encoding='utf-8'?> <truc1> <test1>XXX</test1> <truc2> <test2>XXX</test2> </truc2> <truc3> <test3>XXX</test3> </truc3> </truc1>
Il suffit d'appliquer la feuille xsl suivante. Celle-ci se chargera de supprimer les "namespaces".
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes" method="xml" indent="no"/> <xsl:template match="*"> <xsl:element name="{name()}"> <xsl:apply-templates select="@*"/> <xsl:apply-templates/> </xsl:element> </xsl:template> <xsl:template match="@*"> <xsl:if test="local-name() = name()"> <xsl:copy/> </xsl:if> </xsl:template> <xsl:template match="text()"> <xsl:copy> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="comment()"/> </xsl:stylesheet>
Aucun commentaire:
Enregistrer un commentaire