Bonjour à tous,
Soit le genre de XML suivant
que j'aimerais transformer en tableau html sous la forme
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 <?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/xsl" href="file-xsl.xsl"?> <root> <ligne> <nom>DUPOND</nom> <prenom>Jeanne</prenom> <date>01/01/2001</date> <adresse> <num>125</num> <lib>Rue de la république</lib> <ville>Paris</ville> </adresse> <enfants> <enfant> <nom>DUPOND</nom> <prenom>Bob</prenom> </enfant> <enfant> <nom>DUPOND</nom> <prenom>Rose</prenom> </enfant> </enfants> </ligne> <ligne> <nom>DURAND</nom> <prenom>Roberta</prenom> <date>01/01/2001</date> <adresse> <num></num> <lib></lib> <ville></ville> </adresse> <enfants> <enfant> <nom>DURAND</nom> <prenom>Jean</prenom> </enfant> </enfants> </ligne> </root>
J'ai codé ce XSL suivant, mais mon soucis serait d'arriver à différencier les noeuds <adresse> et <enfants>. Je les code de la même manière, et donc mon résultat html est faussé puisque je créé une nouvelle ligne pour chaque noeud enfant du noeud adresse.
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 <table> <tr> <td>DUPOND</td> <td>Jeanne</td> <td>01/01/2001</td> <td>125</td> <td>Rue de la république</td> <td>Paris</td> <td> <table> <tr> <td>DUPOND</td> <td>Bob</td> </tr> <tr> <td>DUPOND</td> <td>Rose</td> </tr> </table> </td> </tr> <tr> <td>DURAND</td> <td>Roberta</td> <td>01/01/2001</td> <td></td> <td></td> <td></td> <td> <table> <tr> <td>DURAND</td> <td>Jean</td> </tr> </table> </td> </tr> <table>
C'est pas aisé pour un newbie comme moi
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 <?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" indent="yes"/> <!-- Template colonne --> <xsl:template name="colonne"> <xsl:if test="count(*) >= 1"> <td> <table border="1"> <xsl:for-each select="*"> <tr> <xsl:call-template name="colonne"/> </tr> </xsl:for-each> </table> </td> </xsl:if> <xsl:if test="count(*) = 0"> <td><xsl:value-of select="."/></td> </xsl:if> </xsl:template> <!-- Fin Template colonne --> <xsl:template match="root"> <table border="1"> <!-- Pour Chaque ligne --> <xsl:for-each select="*"> <tr> <!-- Colorer une ligne sur 2 --> <xsl:if test="(position() mod 2)=0"> <xsl:attribute name="bgcolor">green</xsl:attribute> </xsl:if> <!-- Pour chaque colonne --> <xsl:for-each select="*"> <xsl:call-template name="colonne"/> </xsl:for-each> </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet>, sachant que ma XSL doit être générique, puisque mon XML peut être structuré différemment.
Merci de votre aide.
Partager