Transformation substitution de namespace

Substitution de namespace

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>

Version avec XSLT 2.0 et préfixe de namespace par défaut

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

local-name()

La fonction XPath local-name() renvoie le nom d'un élément privé de son namespace.

AccueilProgrammation XSL-XSLT > Transformation substitution de namespace< PrécédentSuivant >