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.