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:à 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> <Name>ABC</Name> <Street>xxx</Street> <City>Abc</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".
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>
J'ai essayé avec cette transformation XSLTMalheureusement, cela ne fonctionne pas.
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>
Je pense que le problème provient de mon expression xpath dans la ligneparce que si j'écris
Code : Sélectionner tout - Visualiser dans une fenêtre à part <xsl:template match="//Declarant">
, alors il me met généreusement des "common:" à tous les éléments.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <xsl:template match="*">
Où est mon erreur ?
Je désire comprendre, merci de m'expliquer comment corriger.
Merci.
Partager