[XSL] Prob. de tri sur un template
Bonjour,
voilà je souhaite faire un tri au sein d'une balise <for:each...>.
Pour cela j'utilise la balise <xsl:sort..>.
D'abord mon fichier xml :
Code:
1 2 3 4 5 6 7 8
|
<racine>
<row acs="1.7" libelle="Morteau CRD"
indicateur1="Truc" valeur1="13" unite1=""
indicateur2="Machin" valeur2="50" unite2=""
indicateur3="Chose" valeur3="47" unite3=""
indicateur4="Bordel" valeur4="190" unite4="" />
</racine |
Voici la partie du xsl posant problème :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
<xsl:for-each select="racine/row">
<xsl:sort select="@indicateur1" order="ascending" data-Type="number"/>
<tr>
<td class="11px" align="center"><xsl:value-of select="@libelle"/></td>
<!-- template générant les autres colonnes-->
<xsl:call-template name="colonne">
<xsl:with-param name="debut" select="1" />
<xsl:with-param name="fin" select="$nbColonne" />
</xsl:call-template>
</tr>
</xsl:for-each> |
Si j'effectue un tri sur le "libelle" -> aucun prob.
Par contre si j'effectue un tri sur 'indicateur1', colonne construite dans le template, --> pas de tri. Ca marche pas.
Voici mon template :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
<xsl:template name="colonne">
<xsl:param name="debut" select="0" />
<xsl:param name="fin" select="0" />
<xsl:param name="nomValeur" select="concat('valeur',$debut)" />
<xsl:param name="nomUnite" select="concat('unite',$debut)" />
<!-- colonne du tableau -->
<td class="11px" align="right"><xsl:value-of select="@*[name()=$nomValeur]"/><xsl:text> </xsl:text>
<xsl:value-of select="@*[name()=$nomUnite]"/></td>
<xsl:if test="$debut < $fin">
<xsl:call-template name="ligne">
<xsl:with-param name="debut" select="($debut)+1" />
<xsl:with-param name="fin" select="$fin" />
</xsl:call-template>
</xsl:if>
</xsl:template> |
Je suis obligé d'utiliser ce template pour fabriquer de manière générique mes colonnes. En effet le nombre d'attributs 'indicateur', 'valeur' et 'unite' est indétermminé.
Si quelqu'un a une idée ... merci !