Bonjour tout le monde

j'ai un petit souci avec le xsl:if sur un paramètre, à moins qu'une autre solution existe
Tout d'abord voici mon fichier XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE repertoire SYSTEM "repertoire.dtd">
<?xml-stylesheet type="text/xsl" href="style.xslt"?>
<repertoire>
     <personne id="1">
         <nom pays="Belgique" ville="Yvoir">Dupont</nom>
         <prenom>Jean</prenom>
         <age jour="22" mois="06" annee="1978">29</age>
     </personne>
     etc...
</repertoire>

et voilà le xsl ou je bloque

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output 
  method="html"
  encoding="ISO-8859-1"
  indent="yes" />
  
<xsl:param name="orderby"/>
<xsl:param name="sens"/>

<xsl:template match="/">
     <xsl:for-each select="repertoire/personne">
     <xsl:sort select="*[name()=$orderby]" order="{$sens}"/>
	 <tr class="content">
	     <xsl:if test="position() mod 2 = 0">
		     <xsl:attribute name="class">content2</xsl:attribute>
		 </xsl:if>
		 <td><xsl:value-of select="nom"/></td>
		 <td><xsl:value-of select="prenom"/></td>
		 <td><xsl:value-of select="age"/></td>
		 <td><xsl:value-of select="nom/@pays"/></td>
		 <td><xsl:value-of select="nom/@ville"/></td>
		 <td><xsl:value-of select="age/@jour"/></td>
		 <td><xsl:value-of select="age/@mois"/></td>
		 <td><xsl:value-of select="age/@annee"/></td>
		 </tr>
	 </xsl:for-each>
</xsl:template>
</xsl:stylesheet>

et mon problème est le suivant.
pour l'instant j'ai deux paramètre 'orderby' et 'sens' pour ce qui est du triage par 'nom' | 'prenom' | 'age', pas de souci ca fonctionne parfaitement, mais 'pays' | 'ville' | 'jour' | 'mois' | 'annee' sont des attribut et donc mon 'sort' n'est plus correct et je voudrais faire quelques chose du style

<xsl:if test="$orderby = 'pays' or $orderby = 'ville'">
  <xsl:sort select="nom/@{$orderby}" order="{$sens}"/>
</xsl:if>
<xsl:if test="$orderby = 'jour' or $orderby = 'mois'  or $orderby = 'annee'">
  <xsl:sort select="age/@{$orderby}" order="{$sens}"/>
</xsl:if>
<xsl:if test="$orderby ='nom' or $orderby = 'prenom' or $orderby = 'age'">
  <xsl:sort select="*[name()=$orderby]" order="{$sens}"/>
</xsl:if>
[code]
mais dés que je change la ligne
[code]
<xsl:sort select="*[name()=$orderby]" order="{$sens}"/>

j'obtient une dizaine de message d'erreur me disant que les { } dans le 'select' ne sont pas autorisé alors que dans order il sont autoriser, j'ai lu plusieur chose qui disent d'utiliser 'choose' | 'when' | 'other' mais c'est toujour les même message d'erreur, et avec xsl:if il me dit que $orderby n'est pas valide, j'ai aussi essayer de mettre les { } dans le if pour encadré le paramètre mais j'ai le même message me diant que { } ne sont pas correct

Pourriez-vous m'aider à me mettre sur la bonne voix ?
d'avance merci de votre aide
j'ai essayer d'utiliser choose

<xsl:choose>
	<xsl:when test="$roderby = 'nom' or $orderby = 'prenom' or $orderby= 'age'">
		<xsl:sort select="*[name()=$orderby]" order="{$sens}"/>
	</xsl:when>
	<xsl:when test="$roderby = 'jour' or $orderby = 'mois' or $orderby= 'annee'">
		<xsl:sort select="age/@[name()=$orderby]" order="{$sens}"/>
	</xsl:when>
	<xsl:otherwise>
		<xsl:sort select="nom/@[name()=$orderby]" order="{$sens}"/>
	</xsl:otherwise>
</xsl:choose>

Et voici les message d'erreur que j'obtient
a écrit :

Warning: XSLTProcessor::importStylesheet() [function.XSLTProcessor-importStylesheet]: compilation error: file style.xslt line 18 element sort in C:\wamp\www\Cours\XML\Ex_PHP_XPATH\index.php on line 58

Warning: XSLTProcessor::importStylesheet() [function.XSLTProcessor-importStylesheet]: element sort is not allowed within that context in C:\wamp\www\Cours\XML\Ex_PHP_XPATH\index.php on line 58

Warning: XSLTProcessor::importStylesheet() [function.XSLTProcessor-importStylesheet]: compilation error: file style.xslt line 21 element sort in C:\wamp\www\Cours\XML\Ex_PHP_XPATH\index.php on line 58

Warning: XSLTProcessor::importStylesheet() [function.XSLTProcessor-importStylesheet]: element sort is not allowed within that context in C:\wamp\www\Cours\XML\Ex_PHP_XPATH\index.php on line 58

Warning: XSLTProcessor::importStylesheet() [function.XSLTProcessor-importStylesheet]: Invalid expression in C:\wamp\www\Cours\XML\Ex_PHP_XPATH\index.php on line 58

Warning: XSLTProcessor::importStylesheet() [function.XSLTProcessor-importStylesheet]: compilation error: file style.xslt line 21 element sort in C:\wamp\www\Cours\XML\Ex_PHP_XPATH\index.php on line 58

Warning: XSLTProcessor::importStylesheet() [function.XSLTProcessor-importStylesheet]: xsltSortComp: could not compile select expression 'age/@[name()=$orderby]' in C:\wamp\www\Cours\XML\Ex_PHP_XPATH\index.php on line 58

Warning: XSLTProcessor::importStylesheet() [function.XSLTProcessor-importStylesheet]: compilation error: file style.xslt line 24 element sort in C:\wamp\www\Cours\XML\Ex_PHP_XPATH\index.php on line 58

Warning: XSLTProcessor::importStylesheet() [function.XSLTProcessor-importStylesheet]: element sort is not allowed within that context in C:\wamp\www\Cours\XML\Ex_PHP_XPATH\index.php on line 58

Warning: XSLTProcessor::importStylesheet() [function.XSLTProcessor-importStylesheet]: Invalid expression in C:\wamp\www\Cours\XML\Ex_PHP_XPATH\index.php on line 58

Warning: XSLTProcessor::importStylesheet() [function.XSLTProcessor-importStylesheet]: compilation error: file style.xslt line 24 element sort in C:\wamp\www\Cours\XML\Ex_PHP_XPATH\index.php on line 58

Warning: XSLTProcessor::importStylesheet() [function.XSLTProcessor-importStylesheet]: xsltSortComp: could not compile select expression 'nom/@[name()=$orderby]' in C:\wamp\www\Cours\XML\Ex_PHP_XPATH\index.php on line 58

Warning: XSLTProcessor::transformToDoc() [function.XSLTProcessor-transformToDoc]: No stylesheet associated to this object in C:\wamp\www\Cours\XML\Ex_PHP_XPATH\index.php on line 65

Fatal error: Call to undefined method stdClass::saveXML() in C:\wamp\www\Cours\XML\Ex_PHP_XPATH\index.php on line 67

et si je remet comme dans mon premier post, plus aucun message d'erreur et le triage fonctionne uniquement sur 'nom' | 'prenom' | 'age' mais pas sur les attribut