Transformation substitution de namespace
Définition : Substitution de namespace
Une substitution de namespace est une transformation qui substitue un namespace par un autre.
Exemple :
1
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
Exemple : Version avec XSLT 2.0 et préfixe de namespace par défaut
1
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ément : local-name()
La fonction XPath local-name()
renvoie le nom d'un élément privé de son namespace.