Bonjour,

Puis-je soumettre ce problème à votre sagacité ? Je ne parviens pas à comprendre mon erreur et vos explications seront les bienvenues.

Au départ, j'ai le XML suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?>
<IntraConsignment IntraListingsNbr="1" xmlns="http://www.xyz.com/IntraConsignment" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:common="http://www.xyz.com/InputCommon">
	<IntraListing SequenceNumber="1" ClientsNbr="13" AmountSum="150.50">
		<Declarant>
			<Name>ABC</Name>
			<Street>xxx</Street>
			<City>Abc</City>
		</Declarant>
		<Period>
			<Year>2019</Year>
		</Period>
	</IntraListing>
</IntraConsignment>
à l'arrivée, je désire avoir le XML suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?>
<IntraConsignment IntraListingsNbr="1" xmlns="http://www.xyz.com/IntraConsignment" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:common="http://www.xyz.com/InputCommon">
	<IntraListing SequenceNumber="1" ClientsNbr="13" AmountSum="150.50">
		<Declarant>
			<common:Name>ABC</common:Name>
			<common:Street>xxx</common:Street>
			<common:City>Abc</common:City>
		</Declarant>
		<Period>
			<Year>2019</Year>
		</Period>
	</IntraListing>
</IntraConsignment>
Comme vous le voyez la différence se situe au niveau du préfixe "common:" ajouté à tous les éléments descendants de "Declarant".

J'ai essayé avec cette transformation XSLT
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="UTF-8"?>
<!-- The main xsd schema calls another schema for common elements used in different files -->
<!-- we will change from : -->
<!--  ...
		<name>ABC</name>
   ... -->
   <!-- To : 
		<common:name>ABC</common:name>
    ...   -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:common="http://www.xyz.com/InputCommon">
	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
	<xsl:template match="@*|*">
		<xsl:copy>
			<xsl:apply-templates select="node()|@*"/>
		</xsl:copy>
	</xsl:template>
 
    <xsl:template match="//Declarant">
		<xsl:element name="common:{local-name()}">
			<xsl:apply-templates select="@*|node()"/>
		</xsl:element>  
	</xsl:template> 
</xsl:stylesheet>
Malheureusement, cela ne fonctionne pas.
Je pense que le problème provient de mon expression xpath dans la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<xsl:template match="//Declarant">
parce que si j'écris
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<xsl:template match="*">
, alors il me met généreusement des "common:" à tous les éléments.
Où est mon erreur ?
Je désire comprendre, merci de m'expliquer comment corriger.

Merci.