Bonjour,
Je n'arrive pas à trouver la solution, pour effectuer un regroupement d'un noeud sans qu'il soit cité à chaque tri au sein d'un groupe.La réponse est certainement basique mais c'est ma premiére manipe dans ce langage
Mon fichier xml
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 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="transform-3_par_massif.xsl" type="text/xsl" ?> <MASSIF> <Voies> <Id>0</Id> <Cotation>6b</Cotation> <Massif>Mont Blanc</Massif> <NomDeVoie>La directe</NomDeVoie> <Situation>test ..........</Situation> </Voies> <Voies> <Id>1</Id> <Cotation>7a</Cotation> <Massif>Mont Blanc</Massif> <NomDeVoie>La diagonale</NomDeVoie> <Situation>plus bas...</Situation> </Voies> <Voies> <Id>2</Id> <Cotation>7a+</Cotation> <Massif>Mont Blanc</Massif> <NomDeVoie>Mister speed</NomDeVoie> <Situation>Face Est</Situation> </Voies> <Voies> <Id>3</Id> <Cotation>6c</Cotation> <Massif>Mont Blanc</Massif> <NomDeVoie>La voie normale</NomDeVoie> <Situation>Face Ouest</Situation> </Voies> <Voies> <Id>4</Id> <Cotation>6b</Cotation> <Massif>Mont Blanc</Massif> <NomDeVoie>La Lachenale</NomDeVoie> <Situation>Face Sud</Situation> </Voies> </MASSIF>J'obtiens le résulat suivant :
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 <?xml version="1.0" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" indent="yes" /> <!-- recherche des cotations par Massif pour chaque cotation --> <xsl:key name="byMassif" match="Voies" use="Massif" /> <xsl:template match="MASSIF"> <ul> <!-- genere un id pour chaque valeur de cotation et mise en forme --> <xsl:for-each select="bloc[generate-id() = generate-id(key('byMassif', Massif)[1])]" > <xsl:sort select="Massif " /> <div style="background-color:#b0c4de;"> Massif : <xsl:value-of select="Massif" /> <hr/> </div> <div> <xsl:for-each select="key('byMassif', Massif)" > <xsl:sort select="Cotation"/> <div style="position:relative; top:-10px;left:50px;"><br/> <xsl:value-of select="Cotation" /> </div> <div style="position:relative; top:-10px;left:50px;"> <ul> <li> <xsl:value-of select="NomDeVoie" /> </li> <li> description: <xsl:value-of select="Situation" /></li><br/> </ul> </div> </xsl:for-each> </div> </xsl:for-each> </ul> </xsl:template> </xsl:stylesheet>
Mont Blanc
6b La directe
6b La Lachenale
6c La voie normale
7a La diagonale
7a+ Mister speed
Voici le resultat souhaité:
Mont Blanc
6b La directe
6b La Lachenale
6c La voie normale
7a La diagonale
7a+ Mister speed
Merci pour vos pistes de reflexions
Partager