Bonjour,

Je souhaite construire un "glossaire" en XSL (1.0, je n'ai pas la possibilité de monter en 2.0)

Mon fichier ressemble à ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
<Uri>
    <Title>Mon premier élément</Title>
</Uri>
<Uri>
    <Title>Mon deuxième élément</Title>
</Uri>
<Uri>
    <Title>AZERTY</Title>
</Uri>
...
La sortie contient deux "parties" :

- Dans la premier partie, j'ai un alphabet,

S'il existe au moins un élément "Title" dont la première lettre est "A", je dois mettre "enabled" dans les classes du span.
Sinon je dois mettre "disabled".

S'il existe au moins un élément "Title" dont la première lettre est "B", je dois mettre "enabled" dans les classes du span correspondant.
Sinon je dois mettre "disabled".

Etc.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
<div class=alphabet>
<span class="letterA enabled">A</span>
<span class="letterB disabled">B</span>
<span class="letterC disabled">C</span>
<span class="letterD disabled">D</span>
<span class="letterE disabled">E</span>
...
<span class="letterM enabled">M</span>
...
<span class="letterZ disabled">Z</span>
</div>
Mon deuxième besoin consiste afficher l'ensemble des éléments Title en les classant par ordre alphabétique et dans les plaçant dans le bon "ul".

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
 
<div class=letterA>
    <strong>A</strong>
    <ul>
         <li>AZERTY</li>
    </ul>
</div>
<div class=letterB>
    <strong>B</strong>
    <ul>
    </ul>
</div>
...
<div class=letterM>
    <strong>M</strong>
    <ul>
         <li>Mon deuxième élément</li>
         <li>Mon premier élément</li>
    </ul>
</div>
Dans mon premier besoin, je n'arrive pas à faire un test du type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
      <xsl:if test="count(substring(//Uri/Title,0,1) = 'A')>0">
        A EST PRESENT
      </xsl:if>
==> L'argument 1 de la fonction 'count()' ne peut pas être converti en collection de noeuds. -->count(substring(...itle,0,1) = 'A')<-- > 0

Dans mon second besoin, je n'arrive pas à faire grand chose non plus : //.

La finalité est d'introduire le résultat dans une page web MAIS je ne peux pas traiter ces problèmes en javascript. J'ai d'autres contraintes qui m'imposent de trouver une solution 'full xsl'.

Merci pour votre aide