Salut,

Je voudrais savoir comment faire pour travailler sur des données après qu'elles soient triées par <xsl:sort>.

En pratique, j'ai une liste de fonctions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
<categorie nom="Fonctions générales" id="generale">
  <fonction page="lisp" nom="Lisp">Convertit une expression en expression
    au format LISP</fonction>
  <fonction page="sign" nom="Signe">Signe d'un élément</fonction>
  <fonction page="abs" nom="Abs">Valeur absolue</fonction>
  <fonction page="min" nom="Min">Minimum de deux expressions</fonction>
  <fonction page="max" nom="Max">Maximum de deux expressions</fonction>
  <fonction page="opposite" nom="Oppose">Opposé d'un élément</fonction>
  <fonction page="more_less" nom="PlusMoins">Plus ou moins une valeur</fonction>
</categorie>
On va dire qu'on y accède via "document('fct.xml')/categorie".

Je les affiche donc par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<xsl:for-each select="document('fct.xml')/categorie/fonction">
      <xsl:sort select="@nom" />
<li>
  <a href="{@page}.php" title="{.}"><xsl:value-of select="@nom" /></a>
</li>
</xsl:for-each>
Super, c'est trié !

Mainteant, plus dur : trouver la fonction suivante et précédente, sachant que la fonction actuelle est identifiée par sa page ($page) : "fonction[@page=$page]" ... dans la liste triée !

Pour trouver la fonction suivante, non triée c'est un truc du style :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
<xsl:variable name="fct_cate" select="document('fct.xml')/categorie" />
<xsl:value-of select="$fct_cate/fonction[@page=$page]/following-sibling::*[1]/@page" />
Pour la précédente, on prend : on utilise "preceding-sibling::*[1]".


@+ Haypo