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!
# 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.