Hello tout le monde !
Alors, j'ai un fichier XML avec plusieurs enregistrements qui ressemble à ça :
Et je souhaiterais, via XSL, formater ce XML pour ne garder que les 10 premiers caractères dans le champs "FLAG".
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 <ZBE14_OEMs_ItemUpdate_OUT> <Record> <ItemMaster> <FLAG>ABCDEFGHIJKLMNOPQRST</FLAG> <CONO>700</CONO> <WHLO>20A</WHLO> <STAT>40 / ZS STAT=</STAT> <ITNO>P005603 / ZS ITNO=</ITNO> </ItemMaster> </Record> <Record> <ItemMaster> <FLAG>12345678910111213141516171819</FLAG> <CONO>700</CONO> <WHLO>20A</WHLO> <STAT>20 / ZS STAT=50</STAT> <ITNO>P005937 / ZS ITNO=E25125B30Q16001</ITNO> </ItemMaster> </Record> </ZBE14_OEMs_ItemUpdate_OUT>
Mon bout de code suivant fonctionne mais seule la première occurrence de FLAG ("ABCDEFGHIJ") est tronquée, et elle se trouve reportée sur les autres enregistrements.
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 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:param name="pReplacement" select="substring(ZBE14_OEMs_ItemUpdate_OUT/Record/ItemMaster/FLAG, 1, 10)"/> <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> <xsl:template match="ZBE14_OEMs_ItemUpdate_OUT/Record/ItemMaster/FLAG/text()"> <xsl:value-of select="$pReplacement"/> </xsl:template> </xsl:stylesheet>
Merci à vous
Partager