Bonjour!
Je tente de transformer un fichier xml en un autre pour l'adapter à un datagrid. Le but est de découpler toute l'arborescence pour passer de :
à
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <tree> <batiment libelle="toto1"> <etage ibelle="toto2"> <zone ibelle="toto3" /> </etage> </batiment> </tree>
Mon format de départ est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <tree> <row batiment="toto1" etage="toto2" zone="toto3" /> <tree>
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 <?xml version="1.0" encoding="utf-8" ?> <tree> <batiment id="1" libelle="batiment1"> <etage id="1" libelle="etage1"> <zone id="1" libelle="zone1" /> <zone id="2" libelle="zone2" /> <zone id="3" libelle="zone3" /> </etage> <etage id="2" libelle="etage2"> <zone id="1" libelle="zone1" /> <zone id="2" libelle="zone2" /> <zone id="3" libelle="zone3" /> </etage> </batiment> <batiment id="2" libelle="batiment2"> <etage id="1" libelle="etage1"> <zone id="1" libelle="zone1" /> <zone id="2" libelle="zone2" /> <zone id="3" libelle="zone3" /> </etage> <etage id="2" libelle="etage2"> <zone id="1" libelle="zone1" /> <zone id="2" libelle="zone2" /> <zone id="3" libelle="zone3" /> </etage> </batiment> <batiment id="3" libelle="batiment3"> <etage id="1" libelle="etage1"> <zone id="1" libelle="zone1" /> <zone id="2" libelle="zone2" /> <zone id="1" libelle="zone3" /> </etage> </batiment> </tree>
mon résultat m'affiche bien le format voulu mais les attributs sont vides ....
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 <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" > <xsl:strip-space elements="batiment" /> <xsl:strip-space elements="etage" /> <xsl:strip-space elements="zone" /> <xsl:output method="xml" indent="yes"/> <xsl:template match="tree"> <xsl:element name="tree"> <xsl:for-each select="batiment"> <xsl:for-each select="etage"> <xsl:for-each select="zone"> <xsl:element name="row"> <xsl:attribute name="batiment"> <xsl:value-of select="ancestor::batiment[@libelle]" /> </xsl:attribute> <xsl:attribute name="etage"> <xsl:value-of select="ancestor::etage[@libelle]" /> </xsl:attribute> <xsl:attribute name="zone"> <xsl:value-of select="descendant-or-self::zone[@libelle]" /> </xsl:attribute> </xsl:element> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:element> </xsl:template> </xsl:stylesheet>
Auriez vous une idée du pourquoi ?
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 <?xml version="1.0" encoding="utf-8"?> <tree> <row batiment="" etage="" zone="" /> <row batiment="" etage="" zone="" /> <row batiment="" etage="" zone="" /> <row batiment="" etage="" zone="" /> <row batiment="" etage="" zone="" /> <row batiment="" etage="" zone="" /> <row batiment="" etage="" zone="" /> <row batiment="" etage="" zone="" /> <row batiment="" etage="" zone="" /> <row batiment="" etage="" zone="" /> <row batiment="" etage="" zone="" /> <row batiment="" etage="" zone="" /> <row batiment="" etage="" zone="" /> <row batiment="" etage="" zone="" /> <row batiment="" etage="" zone="" /> </tree>
Merci d'avance pour vos réponses.
Mamat.
Partager