Bonjour !!
J'ai un petit souci : je cherche à trier une liste en fonction de la valeur d'une variable. Par exemple, si la variable vaut 'nom', je souhaite trier par nom. Si elle vaut 'matricule', la liste est triée par matricule.
Quand je mets :
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part <xsl:sort select="mElement/mAgent/mMatricule" lang="FR" data-type="{$DataTypeTri}"/>
le tri s'effectue sans problème. Mais quand je met une variable dans le select, ça foire, alors que champTri contient bien 'mElement/mAgent/mNom' :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <xsl:sort select="mElement/mAgent/mNom" lang="FR" data-type="{$DataTypeTri}"/>
même si je mets ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <xsl:sort select="$champTri" lang="FR" data-type="{$DataTypeTri}"/>
Les variables sont définies bien avant le tri par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <xsl:sort select="*[name(.)=$champTri]" lang="FR" data-type="{$DataTypeTri}"/>
Ces variables ont bien pour valeur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <xsl:variable name="valeurTri"> <xsl:value-of select="..."/> </xsl:variable> <xsl:variable name="champTri"> <xsl:if test="($valeurTri = 'MATRICULE')">mElement/mAgent/mMatricule</xsl:if> <xsl:if test="($valeurTri = 'NOM')">mElement/mAgent/mNom</xsl:if> </xsl:variable> <xsl:variable name="DataTypeTri"> <xsl:if test="($valeurTri = 'MATRICULE')">number</xsl:if> <xsl:if test="($valeurTri = 'NOM')">text</xsl:if> </xsl:variable>
Quelqu'un saurait-il m'expliquer pourquoi ça ne marche pas et ce qu'il faudrait faire pour y remédier ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 valeurTri = MATRICULE champTri = mElement/mAgent/mMatricule DataTypeTri = number
Merci
Partager