Transformation substitution de namespace

DéfinitionSubstitution de namespace

Une substitution de namespace est une transformation qui substitue un namespace par un autre.

Exemple

1
<?xml version="1.0" encoding="UTF-8"?>
2
<xsl:stylesheet 
3
    version="1.0"
4
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"           
5
    xmlns:source="source-namespace"
6
    xmlns:target="target-namespace"
7
    >    
8
    <xsl:output method="xml" indent="yes"/>
9
    
10
    <!-- Identity transformation -->
11
    <xsl:template match="node()|@*">
12
        <xsl:copy>
13
            <xsl:apply-templates select="node()|@*"/>
14
        </xsl:copy>        
15
    </xsl:template>    
16
                        
17
    <!-- Namespace substitution for source-target elements -->                        
18
    <xsl:template match="source:*">
19
        <xsl:element namespace="target-namespace" name="{local-name()}">
20
            <xsl:apply-templates select="node()|@*"/>
21
        </xsl:element>
22
    </xsl:template> 
23
    
24
</xsl:stylesheet>
25

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

1
<?xml version="1.0" encoding="UTF-8"?>
2
<xsl:stylesheet 
3
    version="2.0"
4
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"     
5
    xmlns="target-namespace"    
6
    xpath-default-namespace="source-namespace"
7
    >    
8
    
9
    <xsl:output method="xml" indent="yes"/>
10
    
11
    <!-- Identity transformation -->
12
    <xsl:template match="node()|@*">
13
        <xsl:copy>
14
            <xsl:apply-templates select="node()|@*"/>
15
        </xsl:copy>        
16
    </xsl:template>    
17
    
18
    <!-- Namespace substitution for hdoc elements -->                        
19
    <xsl:template match="*">
20
        <xsl:element name="{local-name()}">
21
            <xsl:apply-templates select="node()|@*"/>
22
        </xsl:element>
23
    </xsl:template> 
24
    
25
</xsl:stylesheet>
26

Complémentlocal-name()

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