Une substitution de namespace est une transformation qui substitue un namespace par un autre.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:source="source-namespace"
xmlns:target="target-namespace"
> <xsl:output method="xml" indent="yes"/>
<!-- Identity transformation --><xsl:template match="node()|@*">
<xsl:copy><xsl:apply-templates select="node()|@*"/>
</xsl:copy> </xsl:template> <!-- Namespace substitution for source-target elements --> <xsl:template match="source:*">
<xsl:element namespace="target-namespace" name="{local-name()}">
<xsl:apply-templates select="node()|@*"/>
</xsl:element> </xsl:template> </xsl:stylesheet><?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="target-namespace"
xpath-default-namespace="source-namespace"
> <xsl:output method="xml" indent="yes"/>
<!-- Identity transformation --><xsl:template match="node()|@*">
<xsl:copy><xsl:apply-templates select="node()|@*"/>
</xsl:copy> </xsl:template> <!-- Namespace substitution for hdoc elements --> <xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="node()|@*"/>
</xsl:element> </xsl:template> </xsl:stylesheet>La fonction XPath local-name() renvoie le nom d'un élément privé de son namespace.