Bonjour,
J'ai essayé de tourner le problème dans tous les sens et je ne comprends pas ce qui ne va pas.
Puisqu'un exemple vaut mieux qu'un long discours, voici les fichiers simplifiés qui représentent mon problème :
Le XML :
Le problème est que j'aimerais trier les personnes par nom, prénom, ou par le texte qui est dans l'élément personne.
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 <?xml version="1.0" encoding="ISO-8859-1" ?> <?xml:stylesheet type="text/xsl" href="test.xsl"?> <personnes> <personne>zzzzz <nom>machin</nom> <prenom>julien</prenom> </personne> <personne>yyyyy <nom>tachin</nom> <prenom>aurelien</prenom> </personne> <personne>xxxxx <nom>bachin</nom> <prenom>patrick</prenom> </personne> </personnes>
J'ai donc un xsl dans ce style :
Tout va bien pour trier par nom ou par prénom, mais dés que je je veux trier par cette foutue valeur dans personne, je n'y arrive pas.
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
22 <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="iso-8859-1"/> <xsl:template name="monTemplate"> <xsl:param name="sortBy" /> trié par : <xsl:value-of select="$sortBy" /><br /> <xsl:for-each select="personne"> <xsl:sort select="*[name() = $sortBy]" order="ascending"/> <xsl:value-of select="nom"/> <xsl:value-of select="prenom"/><br /> </xsl:for-each> </xsl:template> <xsl:template match="personnes"> <xsl:call-template name="monTemplate"> <xsl:with-param name="sortBy">nom</xsl:with-param> </xsl:call-template> </xsl:template> </xsl:stylesheet>
J'ai essayé :
Mais ça ne joue pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <xsl:call-template name="monTemplate"> <xsl:with-param name="sortBy">.</xsl:with-param> </xsl:call-template>
Comment faire ?
Partager