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 :
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>
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.
J'ai donc un xsl dans ce style :
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>
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.

J'ai essayé :
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>
Mais ça ne joue pas.

Comment faire ?