Bonjour,
Je dois construire une hererchie imbriquée, à partir d'une structure a seulement deux niveaux pere - fils.
Une des difficultés que je rencontre est d'identifier le premier niveau car il n'y a pas de balise ou d'attribut particulier pour l'identifier.
Voici la structre, en exemple:
Et le résultat que je cherche à obtenir:
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 <events> <event> <father>A11111</father> <sons> <son>B22222</son> <son>B33333</son> <son>B44444</son> </sons> </event> <event> <father>B22222</father> <sons> <son>C22222</son> <son>C33333</son> <son>C44444</son> </sons> </event> <event> <father>B33333</father> <sons> <son>D22222</son> <son>D33333</son> <son>D44444</son> </sons> </event> </events>
Sachant que les balises events ne sont pas forcément ordonnées dans l'ordre de la hierarchie, evidemment...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <container id="A11111"> <container id="B22222"> <item>C22222</item> <item>C33333</item> <item>C44444</item> </container> <container id="B33333"> <item>D22222</item> <item>D33333</item> <item>D44444</item> </container> <item>B44444</item> </container>
je comprend bien qu'il faut faire une structure recursive, mais je ne sais pas comment identifier
je suis parti sur un apply template:
mais la je suis bloqué...
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 <xsl:template match="events"> <xsl:apply-templates select="event"/> <xsl:template/> <xsl:template match="event"> <container> <xsl:value-of select="father"/> <!-- Comment identifier que c'est la structure de plus haut niveau ? --> </container> <xsl:for-each select="sons/son"> <!-- identifier si le fils a des fils, si non --> <item><xsl:value-of select="."/></item> <!-- si oui, recursivité sur l'element --> <xsl:apply-templates select="."/> </xsl:for-each> </xsl:template>
Partager