Bonjour,
Je recois un fichier XML auquel j'applique une transformation XSL juste pour rajouter un autre tag dedans.
Mon problème est que dans le fichier XML que je reçois et que je veux transformer il y a des caractères accentués et ça fait planter la transformation XSL (aussi bien avec XML Spy que avec Saxon).
Message d'erreur de Saxon :
Voici le fichier XML que je reçois :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Error on line 1 of file:/c:/mappings/roedlogi/PKT/ROEDPKT.ACC.PKT: SXXP0003: Error reported by XML parser: Erreur de conversion de caractÞre : "M alformed UTF-8 char -- is an XML encoding declaration missing?" (le numÚro de ligne peu t Ûtre trop bas). Transformation failed: Run-time errors were reported
Et voici mon 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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 <?xml version="1.0"?> <Pickticket_1_5 version="1" id="INSDES COMMA"> <GraCptNumEx>ROEDE1009</GraCptNumEx> <Pickticket> <PktCtlNbr>97806</PktCtlNbr> <PktNbr>97806</PktNbr> <OrderType>CR</OrderType> <PickticketHeaderFields> <ManagingTerritory>LIF</ManagingTerritory> <ShipTo>101038</ShipTo> <ShipToName>Monsieur Jean BECKER</ShipToName> <ShipToAddr1>Quai de la République</ShipToAddr1> <ShipToAddr2>ARC EN CIEL</ShipToAddr2> <ShipToCity>ST QUAY PORTRIEUX</ShipToCity> <ShipToZip>22410</ShipToZip> <ShipToCountry>001</ShipToCountry> <CustomerPONumber>17 THEO</CustomerPONumber> <OrderDate>2006-01-13T00:00:00+01:00</OrderDate> <ScheduleDeliveryDate>2006-01-13T00:00:00+01:00</ScheduleDeliveryDate> <InventoryShortageFlag></InventoryShortageFlag> <SpeclInstrCode1></SpeclInstrCode1> <CollectFreight>M</CollectFreight> <Related>1</Related> <CODFunds>A</CODFunds> <FTSRNbr>470.03</FTSRNbr> <PortOfLoading></PortOfLoading> <PortOfDischarge></PortOfDischarge> <TMSPurchaseOrderFlag>Y</TMSPurchaseOrderFlag> <DesigModeCode>M</DesigModeCode> <ShipToCnty>101038</ShipToCnty> </PickticketHeaderFields> <ListOfHdrInstructions> <PickticketHdrInstruction> <SpclInstrNbr>1</SpclInstrNbr> <SpclInstrType>03</SpclInstrType> <SpclInstrCode>01</SpclInstrCode> <PickticketInstrFields> <SpclInstrDesc>02 96 70 47 79</SpclInstrDesc> </PickticketInstrFields> </PickticketHdrInstruction> <PickticketHdrInstruction> <SpclInstrNbr>2</SpclInstrNbr> <SpclInstrType>03</SpclInstrType> <SpclInstrCode>01</SpclInstrCode> <PickticketInstrFields> <SpclInstrDesc>LIVRAISON IMPERATIVE LE 15 SEPTEMBRE</SpclInstrDesc> </PickticketInstrFields> </PickticketHdrInstruction> </ListOfHdrInstructions> <ListOfPickticketDetails> <PickticketDetail> <PktLineNbr>1</PktLineNbr> <SKU> <SKUDefinition> <SizeDesc>BT5S6</SizeDesc> </SKUDefinition> </SKU> <SubSKUFields> <BatchNumber>FRANCE</BatchNumber> </SubSKUFields> <PickticketDetailFields> <OrigOrderQty>5.00</OrigOrderQty> <OrigPktQty>5.00</OrigPktQty> <OriginalOrderLineNumber>1</OriginalOrderLineNumber> <RefField1>C06</RefField1> </PickticketDetailFields> </PickticketDetail> </ListOfPickticketDetails> </Pickticket> </Pickticket_1_5>
Merci de votre aide.
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
24
25
26
27 <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:xdt="http://www.w3.org/2005/xpath-datatypes"> <xsl:import href="communs.xsl"/> <xsl:import href="PKMS.xsl"/> <xsl:output omit-xml-declaration="yes"/> <xsl:output method="xml" name="XMLFile" indent="yes"/> <xsl:template match="OrderDate"> <!--ajout d'une balie avec la date courante et avec l'heure courante (PktGenerationDate) après la balise OrderDate--> <xsl:element name="{name()}"> <xsl:apply-templates select="* | text() | @*"/> </xsl:element> <xsl:text> </xsl:text> <xsl:element name="PktGenerationDate"> <xsl:call-template name="Date_PKMS"/> </xsl:element> </xsl:template> <xsl:template match="@*"> <xsl:copy/> </xsl:template> <xsl:template match="*"> <xsl:element name="{name()}"> <xsl:apply-templates select="* | text() | @*"/> </xsl:element> </xsl:template> </xsl:stylesheet>
Partager