Bonjour,
je suis débutant en langage xslt et je pédale dans la semoule avec mon fichier xml, je m'explique :
je reçois un fichier xml du type
et je dois en faire 3 fichiers (pour cet exemple) mais en gardant un header à chaque fois adapté (cf données en gras):
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 <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>14992654380</MsgId> <NbOfTxs>3</NbOfTxs> <TtlIntrBkSttlmAmt Ccy="EUR">145.00</TtlIntrBkSttlmAmt> </GrpHdr> <DrctDbtTxInf> <TxId>12341</TxId> <IntrBkSttlmAmt Ccy="EUR">20.00</IntrBkSttlmAmt> </DrctDbtTxInf> <DrctDbtTxInf> <TxId>12342</TxId> <IntrBkSttlmAmt Ccy="EUR">50.00</IntrBkSttlmAmt> </DrctDbtTxInf> <DrctDbtTxInf> <TxId>12343</TxId> <IntrBkSttlmAmt Ccy="EUR">75.00</IntrBkSttlmAmt> </DrctDbtTxInf> </FIToFICstmrDrctDbt> </Document>
1er fichier
2ème fichier :
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 <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>14992654380</MsgId> <NbOfTxs>1</NbOfTxs> <TtlIntrBkSttlmAmt Ccy="EUR">20.00</TtlIntrBkSttlmAmt> </GrpHdr> <DrctDbtTxInf> <TxId>12341</TxId> <IntrBkSttlmAmt Ccy="EUR">20.00</IntrBkSttlmAmt> </DrctDbtTxInf> </FIToFICstmrDrctDbt> </Document>
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 <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>14992654380</MsgId> <NbOfTxs>1</NbOfTxs> <TtlIntrBkSttlmAmt Ccy="EUR">50.00</TtlIntrBkSttlmAmt> </GrpHdr> <DrctDbtTxInf> <TxId>12342</TxId> <IntrBkSttlmAmt Ccy="EUR">50.00</IntrBkSttlmAmt> </DrctDbtTxInf> </FIToFICstmrDrctDbt> </Document>
3ème fichier :
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 <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>14992654380</MsgId> <NbOfTxs>1</NbOfTxs> <TtlIntrBkSttlmAmt Ccy="EUR">75.00</TtlIntrBkSttlmAmt> </GrpHdr> <DrctDbtTxInf> <TxId>12343</TxId> <IntrBkSttlmAmt Ccy="EUR">75.00</IntrBkSttlmAmt> </DrctDbtTxInf> </FIToFICstmrDrctDbt> </Document>
J'essaye d'utiliser XSLT pour transformer tout ça mais à part copier l'intégralité du fichier, et initialiser <NbOfTxs> à 1, mes différents essais avec ce que je trouve sur le web n'aboutissent pas.
fichier xsl:
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"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pain="urn:iso:std:iso:20022:tech:xsd:pacs.003.001.02"> <xsl:output method="xml"/> <!-- copie fichier --> <xsl:template match="@*"> <xsl:copy /> </xsl:template> <xsl:template match="*"> <xsl:element name="{name()}" > <xsl:apply-templates select="* | text() | @*"/> </xsl:element> </xsl:template> <!-- modif zone --> <xsl:template match="pain:GrpHdr/pain:NbOfTxs"> <xsl:element name="NbOfTxs"> <xsl:value-of select="1"/> </xsl:element> </xsl:template>
Merci pour votre aide
Partager