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>
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>
J'obtiens le résulat suivant :

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