Bonjour,

je me lance dans le xsl (enfin j'en avais fait un tout petit peu il y a quelques années mais depuis ma mémoire a été effacée)

J'ai un fichier xml de type arborescence
Code xml : 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
 
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <folder name="RH" order="2">
      <application>
         <url>http://urlftcarto.com/test1?test=1&amp;test=2&amp;test=3</url>
         <role>role 1</role>
         <name>test 1</name>
         <customname></customname>
         <basicat>TST1</basicat>
         <icon></icon>
      </application>
      <application>
         <url>http://urlftcarto.com/test2</url>
         <role>role 2</role>
         <name>test 2</name>
         <customname></customname>
         <basicat>TST2</basicat>
         <icon></icon>
      </application>
   </folder>
   <folder name="Group 1">
      <folder name="Group 11">
         <folder name="Group 111">
         </folder>
         <application>
         <url>http://urlftcarto.com/test4</url>
         <role>role 4</role>
         <name>test 4</name>
         <customname>My new Application</customname>
         <basicat>TST4</basicat>
         <icon></icon>
      </application>
      </folder>
      <application>
         <url>http://urlftcarto.com/test3</url>
         <role>role 3</role>
         <name>test 3</name>
         <customname>My Application</customname>
         <basicat>TST3</basicat>
         <icon></icon>
      </application>
   </folder>
</root>

En gros, il peut y avoir des folders dans des folders sans limite particulière
Je veux afficher cela à l'écran via des ul et li (ce qui me parait le plus pertinent)
J'ai actuellement un xsl qui ressemble à cela
Code xml : 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
 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl='urn:schemas-microsoft-com:xslt'>
<xsl:template match="/"> 
   <div>
   <p>Liste folder</p>
   <ul>
      <xsl:apply-templates select="root/folder" />
   </ul>
   </div>
</xsl:template>
 
<xsl:template match="folder"> 
   <li>
      <xsl:value-of select="@name" />
      <ul>
         <xsl:apply-templates select="folder" />
         <xsl:apply-templates select="application" />
      </ul>
   </li>
</xsl:template>
 
<xsl:template match="application"> 
   <li>
      <xsl:value-of select="url" />
   </li>
</xsl:template>
</xsl:stylesheet>

Jusqu'ici tout va bien.
Mais j'aimerais gérer une notion d'ordre à la manière des favoris des navigateurs. Entre les folders, entre les applications mais aussi entre folder et application qui sont sur le même niveau.

Avez-vous des idées pour faire cela ? De la réorganisation dans mon xml (utiliser une structure mère qui contient l'ordre et qui aura ensuite des fils de type folder ou application ?) ?
J'ai l'impression aussi qu'il me faudra me passer des xsl:apply-templates pour aller vers des foreach mais quid de la récursivité que j'ai facilement ici avec
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
<xsl:template match="folder"> 
   <li>
      <xsl:value-of select="@name" />
      <ul>
         <xsl:apply-templates select="folder" />
         <xsl:apply-templates select="application" />
      </ul>
   </li>
</xsl:template>

Merci d'avance de votre aide