[XSLT] Changer l'ordre de tri d'une liste
Bonjour
J'ai un fichier XML qui comporte des elements <col> definisant en attribut : id = la position de la colonne, width = sa largeur et dont le contenu est le titre
L'attribut "last" indique la colonne qui doit passer en dernière position
Code:
1 2 3 4 5 6 7 8 9 10 11
|
<setting last=1>
<col id="0" width="15">Titre1</col>
<col id="1" width="10">Titre2</col>
<col id="2" width="10">Titre3</col>
<col id="3" width="8">Titre4</col>
<col id="4" width="15">Titre5</col>
<col id="5" width="auto">Titre6</col>
<col id="6" width="10">Titre7</col>
<col id="7" width="15">Titre8</col>
</setting> |
La template suivante affiche les colonnes dans l'ordre
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
<xsl:template name="colHeader">
<tr>
<xsl:apply-templates select="//setting/col">
<xsl:sort select="@id" order="ascending" data-type="text"/>
</xsl:apply-templates>
</tr>
</xsl:template>
<xsl:template match="col">
<th>
<xsl:attribute name="style">
<xsl:text>width: </xsl:text>
<xsl:value-of select="@width"/>
<xsl:if test="number(@width)">
<xsl:text>%; </xsl:text>
</xsl:if>
</xsl:attribute>
<xsl:value-of select="."/>
</th>
</xsl:template> |
Comment peut t'on changer l'ordre pour que la colonne 1 passe en dernière position
J'ai testé plusieurs solutions :
- avec for-each mais les paramateres ne peuvent pas être mis dans une clause conditionnelle
- de changer les attributs id de col mais sans succés
Une idée pour résoudre ce problème
Merci