Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Programmation.web : Utilisation d'un paramètre dans xsl:sort

Posté par Sixel (page perso, ) le 25 octobre 2004
Cher forum,



J'essaie de retourner le problème un peu dans tous les sens, mais ça veut pas, sûrement dû à mes faibles connaissances en XSLT...



Voici ce qui me turlupine:

J'ai une longue série de noeuds, comprenant chacun une vingtaine d'attributs. Je voudrais faire un affichage de ces données en triant selon les valeurs d'un attribut donné.



La solution bourrin consiste à définir deux paramètres (un pour definir l'attribut qui servira au tri, l'autre pour le sens de tri). Mais je me trouve avec une 40aine de if, pour chaque paire {attribut,sens} possible.



Une solution plus jolie, serait de pouvoir passer ces deux paramètres à xsl:sort, un truc du genre



/xsl:param name="sortby" select="attribut_1"/

/xsl:param name="sortorder" select="ascending"/



puis



/xsl:sort select="@sortby" case-order="@sortorder"/



mais bien sûr, ça chie dans la colle...



Alors si y'a une solution miracle, ou tout simplement une manière toute bête de faire en xslt, je suis preneur!



Merci d'avance!

> Lire le message (4 commentaires, moyenne: 1).  

Vous avez demandé le commentaire #489422.

Comme ca ?

Posté par _alex () le 25/10/2004 à 20:21. (lien). Évalué à 2.


(xsl:template name="TMP")
(xsl:param name="SORTBY"/)
(xsl:param name="SORTORDER"/)
(xsl:sort select="$SORTBY" select="$SORTORDER")
(/xsl:template)


Pour (xsl:sort select="@sortby" case-order="@sortorder") :
@sortby et équivalent à ./@sortby ou . représente le noeud courrant dans le XML à transformer.

Note : (xsl:sort select="$SORTBY" select="$SORTORDER") et peut être à remplacer par (xsl:sort select="{$SORTBY}" select="{$SORTORDER}")

J'ai pas testé donc pas sur.