En effet ça marche !!
Je te remercie énormément !!
Bonne continuation !
Version imprimable
En effet ça marche !!
Je te remercie énormément !!
Bonne continuation !
euh....j'ai comme un problème
Mon projet, développé sur eclipse Indigo a été exporté vers un autre éclipse (Juno) sur une autre machine (choix du client). En gros je développe directement chez eux maintenant...
Pour des raisons pratiques, j'ai continué à développer et tester cette partie de transformation xml, sur mon poste.
Je viens donc de copier le fichier XSL de mon projet (Indigo) vers le projet installé sur la machine "client" (juno). Je viens de lancer le process et ça ne marche plus :cry:
J'ai bien sûr vérifié le fichier en entrée, c'est le bien le même. J'ai réussi à "corriger" ou plutôt adapter les instructions du fichier XSL mais pas toutes.
Un exemple, initialiser la balise <NbOfTxs>:
ce qui marche sur mon poste (eclipse indigo) mais qui ne fonctionne pas sur la machine client (eclipse juno)
Code:
1
2
3 <xsl:template match="pain:NbOfTxs"> <xsl:element name="NbOfTxs">1</xsl:element> </xsl:template>
ça ne fonctionnait pas car ça me gardait le namespace, autrement dit j'obtenais :
Code:<NbOfTxs xmlns:pain="urn:iso:std:iso:20022:tech:xsd:pacs.003.001.02">1</NbOfTxs>
j'ai finalement réussi en changeant le code ci-dessus par :
et là j'obtiens le résultat attendu :Code:
1
2
3 <xsl:template match="pain:NbOfTxs"> <xsl:copy><xsl:copy-of select="@*"/>1</xsl:copy> </xsl:template>
Mon problème est que je cherche à ajouter une balise. J'y arrive sur mon poste avec indigo mais ça ne marche pas chez eux (juno) car il me garde toujours le ns.Code:<NbOfTxs>1</NbOfTxs>
Quelle pourrait être la cause de ce type de problème ?
Le code pour mettre à jour le montant fonctionne aussi:
Actuellement j'essaie d'insérer une balise <InstgAgt>pour avoir de type de résultat :Code:
1
2
3
4
5
6 <xsl:template match="pain:TtlIntrBkSttlmAmt"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:value-of select="//pain:IntrBkSttlmAmt"/> </xsl:copy> </xsl:template>
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <?xml version="1.0" encoding="UTF-8"?> <Document xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.003.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pacs.003.001.02 pacs.003.001.02.xsd"> <FIToFICstmrDrctDbt> <GrpHdr> <MsgId>FRROPCMCIFRPAXXX3014992654380</MsgId> <NbOfTxs>1</NbOfTxs> <TtlIntrBkSttlmAmt Ccy="EUR">20.00</TtlIntrBkSttlmAmt> </GrpHdr> <DrctDbtTxInf> <TxId>1301118938300480</TxId> <IntrBkSttlmAmt Ccy="EUR">20.00</IntrBkSttlmAmt> <InstgAgt> <FinInstnId> <BIC>NOTMANDATORY</BIC> </FinInstnId> </InstgAgt> </DrctDbtTxInf> </FIToFICstmrDrctDbt> </Document>
j'y arrive sur indigo avec :
Code:
1
2
3
4
5
6
7
8
9
10
11 <xsl:template match="pain:DrctDbtTxInf"> <xsl:element name="DrctDbtTxInf"> <xsl:copy-of select="node()"/> <xsl:element name="InstgAgt"> <xsl:element name="FinInstnId"> <xsl:element name="BIC">NOTMANDATORY</xsl:element> </xsl:element> </xsl:element> </xsl:element> </xsl:template>
mais ça ne fonctionne pas chez eux....
J'ai l'impression que le "<xsl:element>" n'est pas trop apprécié...
Tu crois que <xsl:element> peut poser problème avec les namespaces ? Je ne suis pas sûr... Je l'ai dit combien de fois, quatre ? Cinq ?
Bref. Remplacer :
parCode:
1
2
3
4
5 <xsl:element name="InstgAgt"> <xsl:element name="FinInstnId"> <xsl:element name="BIC">NOTMANDATORY</xsl:element> </xsl:element> </xsl:element>
Et pour éviter qu'ils fassent apparaître xmlns:pain, ajouter exclude-result-prefixes="pain" dans <xsl:stylesheet>.Code:
1
2
3
4
5 <InstgAgt> <FinInstnId> <BIC>NOTMANDATORY</BIC> </FinInstnId> </InstgAgt>
C'est un peu chiant et du coup il vaut mieux copier les balises quand c'est possible que d'écrire de nouvelles balises. Mais quand il n'y a rien à copier puisqu'il s'agit de créer, c'est ça la méthode la plus simple.
j'ai appliqué ta modif mais ça n'a pas marché...
mais comme tu conseillais de copier les balises plutôt que d'en créer, j'ai changé
ça:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <xsl:template match="pain:DrctDbtTxInf"> <xsl:element name="DrctDbtTxInf"> <xsl:copy-of select="node()"/> <!-- <xsl:element name="InstgAgt"> <xsl:element name="FinInstnId"> <xsl:element name="BIC">NOTMANDATORY</xsl:element> </xsl:element> </xsl:element> --> <InstgAgt> <FinInstnId> <BIC>NOTMANDATORY</BIC> </FinInstnId> </InstgAgt> </xsl:element> </xsl:template>
par ça :
Et là ça marche !!Code:
1
2
3
4
5
6
7
8
9
10
11 <xsl:template match="pain:DrctDbtTxInf"> <xsl:copy> <xsl:copy-of select="node()"/> <InstgAgt> <FinInstnId> <BIC>NOTMANDATORY</BIC> </FinInstnId> </InstgAgt> </xsl:copy> </xsl:template>
Merci pour ton aide !!!!