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!
Forum Programmation.web Utilisation d'un paramètre dans xsl:sort
25
oct.
2004
# Une solution (si j'ai bien compris)
Posté par Frédéric Desmoulins (site web personnel) . Évalué à 1.
<xsl:sort select="@monAttribut" />
<!-- mon traitement -->
</xsl:for-each>
Avec comme attribut de l'element sort:
data-type="text|number|qname"
order="ascending|descending"
En esperant avoir répondu à ta question!
Bonne chance
[^] # Re: Une solution (si j'ai bien compris)
Posté par Sixel . Évalué à 1.
Ben pas vraiment non... Je sais comment fonctionne xsl:sort, le problème est que je voudrais pouvoir coder ses attributs non pas en dur, mais au moyen de variables/paramètres. Ca marche pour l'attribut select grâce à [1], mais je voudrais pouvoir faire la même chose pour l'attribut order, et pourquoi pas le data-type aussi...
[1] : http://www.biglist.com/lists/xsl-list/archives/200104/msg01292.html(...)
"Il faut" (Ezekiel 18:4) "forniquer" (Corinthiens 6:9, 10) "avec des chiens" (Thessaloniciens 1:6-9) "morts" (Timothée 3:1-10).
# Comme ca ?
Posté par _alex . Évalué à 2.
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.
# Pour info, j'ai trouvé la solution à mon problème...
Posté par Sixel . Évalué à 1.
"Il faut" (Ezekiel 18:4) "forniquer" (Corinthiens 6:9, 10) "avec des chiens" (Thessaloniciens 1:6-9) "morts" (Timothée 3:1-10).
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.