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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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