Bonjour à tous
Je débute en XSLT et je ne sais pas comment obtenir ce que je veux.
J'ai la structure suivante :
Je cherche à regrouper les documents par domaine puis famille :
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 <Systeme> <Document> <Type>PRO</Type> <Domaine>COM</Domaine> <Famille>AEC</Famille> <Libelle>Avis Echéance</Libelle> </Document> <Document> <Type>BUR</Type> <Domaine>COM</Domaine> <Famille>DEV</Famille> <Libelle>Offre commune</Libelle> </Document> <Document> <Type>BUR</Type> <Domaine>COM</Domaine> <Famille>DEV</Famille> <Libelle>Tarificateur MRE ACTE iard</Libelle> </Document>
Par domaine, j'y arrive comme cela :
Les class sont pour mon css utilisé pour la mise en 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 <?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:key name="domaine-gr" match="Document" use="Domaine" /> <xsl:template match="/"> <html> <head> <LINK rel="stylesheet" type="text/css" href="tri.css"/> </head> <body> <ul class="niveau1"> <xsl:for-each select="//Document[generate-id()= generate-id(key('domaine-gr',Domaine)[1])]"> <li> <xsl:value-of select="Domaine" /> <ul class="niveau2"> <xsl:for-each select="key('domaine-gr',Domaine)"> <li> <xsl:value-of select="Famille" /> - <xsl:value-of select="Libelle" /> </li> </xsl:for-each> </ul> </li> </xsl:for-each> </ul> </body> </html> </xsl:template> </xsl:stylesheet>
Avec ce XSLT, j'obtiens la liste de toutes les paires famille-libellé par domaine.
Je voudrais maintenant regrouper ensuite chaque famille de domaine.
au lieu d'avoir :
COM
- AEC - avis échéance
- DEV - offre commune
- DEV - Tarificateur
Je voudrais :
COM
- AEC
--- avis échéance
- DEV
--- offre commune
--- Tarificateur
Encore désolé pour la mise en page mais je n'ai pas réussi à faire mieux.
Bonne journée à tous et merci d'avance.
Partager