Bonjour,
Problématique :
1)
Mes connaissances théoriques sur XML et XSL se fritent et s'effritent à l'épreuve de la mise en application.
Certes le "bon code" m'intéresse en premier lieu.
Mais si vous pouviez mettre des commentaires afin que je comprenne (enfin) ce que le code réalise, ça serait super !
2)
À partir de fichier XML, j'essaye d'exporter un fichier CSV dont la 1ère ligne contient le nom des champs (balise).
Le signe séparateur est le point-virgule.
J'essaye d'avoir une seule feuille XSL pour effectuer cette transformation.
3)
Dans la feuille XSL,
si j'utilise : <xsl:output method="text" /> Rien ne sort.
Si j'utilise : <xsl:output method="xml" /> Il y a un rajout d'une ligne XML
J'utilise le code suivant pour sauvegarder le résultat :
Set result = createobject("Msxml2.DOMDocument.6.0")
result.async = "false"
result.validateOnParse = "false"
ObjRacine.TransformNodeToObject Stylesheet, Result
Result.Save NomFichier & ".txt"
Manque de chance, cette suite d'instruction me rajoute en 1ère ligne : <?xml version="1.0" encoding="utf-8" standalone="no"?>
Et je ne veux pas de cette ligne !
Comment faire si <xsl:output method="text" /> ne "fonctionne" pas ?
Grand Merci d'avance pour votre aide.
Cordialement.
Fichier Input No 1
Fichier Input No 2
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 <?xml version="1.0" encoding="utf-8" standalone="no"?> <ArcOgefi> <PAP> <Version>V0.0</Version> <DateTraitement>30/04/2014 10:56:58</DateTraitement> </PAP> <OGEFI> <SUBVENTION Extrac="01/01/2014"> <NoProjet MOV_PROJ="123AZ"> <MntSubvention MOV_CR="4186610,38"> <MOV_ACCT>13130000</MOV_ACCT> <MOV_NAME>A NOUVEAUX</MOV_NAME> <A_Exclure> <MOV_SYSDATE>29/04/2014</MOV_SYSDATE> </A_Exclure> </MntSubvention> </NoProjet> <NoProjet MOV_PROJ="456ER"> <MntSubvention MOV_CR="1154852,21"> <MOV_ACCT>13130000</MOV_ACCT> <MOV_NAME>A NOUVEAUX</MOV_NAME> <A_Exclure> <MOV_SYSDATE>29/04/2014</MOV_SYSDATE> </A_Exclure> </MntSubvention> </NoProjet> </SUBVENTION> </OGEFI> </ArcOgefi>
Fichier Output No 1 (souhaité)
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 <?xml version="1.0" encoding="utf-8" standalone="no"?> <PAIE Extrac="25/03/2014"> <DatePaie MOV_BAL_DATE="3/25/2014"> <Tiers LEDGER="F11007"> <MOV_DOC>42000135</MOV_DOC> <MOV_INVOICE>5673-01244</MOV_INVOICE> </Tiers> <Tiers LEDGER="F11007"> <MOV_DOC>42000136</MOV_DOC> <MOV_INVOICE>290114</MOV_INVOICE> </Tiers> </DatePaie> <DatePaie MOV_BAL_DATE="3/27/2014"> <Tiers LEDGER="F00050"> <MOV_DOC>49000270</MOV_DOC> <MOV_INVOICE>37091847</MOV_INVOICE> </Tiers> </DatePaie> </PAIE>
Fichier Output No 2 (souhaité)SUBVENTION;MOV_PROJ;MOV_CR;MOV_ACCT;MOV_NAME
SUBVENTION;123AZ;4186610,38;13130000;A NOUVEAUX
SUBVENTION;456ER;1154852,21;13130000;A NOUVEAUX
Code mélangeant Choux et CarottesPAIE;MOV_BAL_DATE;LEDGER;MOV_DOC;MOV_INVOICE
PAIE;3/25/2014;F11007;42000135;5673-01244
PAIE;3/25/2014;F11007;42000136;290114
PAIE;3/27/2014;F00050;49000270;37091847
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 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="text" /> <xsl:template match="/"> <xsl:apply-templates select="//SUBVENTION" /> <!-- SUBVENTION est passé en paramètre --> </xsl:template> <xsl:template match="A_Exclure"> </xsl:template> <xsl:template match="SUBVENTION"> <!-- Je cherche à ne sortir que le nom des balises --> <xsl:for-each select=".[position()=1]/*"> <xsl:value-of select="./name()"/> </xsl:for-each>" </xsl:template> <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> </xsl:stylesheet>
Partager