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