Bonjour,
Après avoir lu les différents cours proposé par developper.com sur le XML, XSL et XSLT dans mon cas, je dois exporter des données d'un fichier xml vers un texte plat sans délimiteur, mais dont les champs sont de longeurs fixes et complétés par des espaces.
Voici un exemple :
Fichier GLD.xml
Fichier xml2text.xsl
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="xml2text.xsl" type="text/xsl"?> <GLM> <Item><ID>254</ID><OBJ_KEY>_MPP2007-004-DF</OBJ_KEY><DOC_DATE>20071112</DOC_DATE><DESC>obj MPP vers DF</DESC></Item> <Item><ID>3254</ID><OBJ_KEY>_MPJJ2007-003-DF</OBJ_KEY><DOC_DATE>20071110</DOC_DATE><DESC>obj MPJJ vers DF particulier</DESC></Item> </GLM>
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"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="UTF-8" doctype-public="-//W3C//DTD HTML 4.01//EN" doctype-system="http://www.w3.org/TR/html4/strict.dtd" indent="yes" /> <xsl:variable name="separateur"><xsl:text> </xsl:text></xsl:variable> <xsl:template match="GLM"> <html><body><pre> <xsl:apply-templates select="Item" /> </pre></body></html> </xsl:template> <xsl:template match="Item"> <xsl:value-of select="ID" /> <xsl:value-of select="$separateur"/> <xsl:value-of select="OBJ_KEY" /> <xsl:value-of select="$separateur"/> <xsl:value-of select="DOC_DATE" /> <xsl:value-of select="$separateur"/> <xsl:value-of select="DESC" /> <xsl:value-of select="$separateur"/> <br/> </xsl:template> </xsl:stylesheet>
Voici ce que j'obtiens en sortie :
Voici ce que je souhaiterais obtenir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 254 _MPP2007-004-DF 20071112 obj MPP vers DF 3254 _MPJJ2007-003-DF 20071110 obj MPJJ vers DF particulier
Dans mon cas je voudrais cadrer l'ID à droite sur 4 caractères, le champ OBJ_KEY à gauche sur 22 caractères et le champ DESC à droite sur 30 caractères en complétant ces champs par des espaces.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 254 _MPP2007-004-DF 20071112 obj MPP vers DF 3254 _MPJJ2007-003-DF 20071110 obj MPJJ vers DF particulier
En recherchant sur internet, j'ai trouvé beacoup d'exemples pour transformer du texte en XML, pour exporter du XML en CSV, mais pas du XML en texte avec des champs de taille fixe.
Merci d'avance de votre aide.
Partager