<html>
<head>


<title>&lt;xsl:sort&gt;</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div id="Description">
<table cellpadding="0" cellspacing="0" border="0" width="100%" class="main">
<tr>
<td valign="top" class="NAME">&lt;xsl:sort&gt;</td>
<td valign="top" class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td valign="top" colspan="2" class="description">
D&eacute;finit une cl&eacute; de tri pour le contexte actuel. Cet &eacute;l&eacute;ment appara&icirc;t comme un enfant des &eacute;l&eacute;ments <span class="LITERAL">&lt;xsl:apply-templates&gt;</span> ou <span class="LITERAL">&lt;xsl:for-each&gt;</span>. Dans ces &eacute;l&eacute;ments, le premier <span class="LITERAL">&lt;xsl:sort&gt;</span> d&eacute;finit la cl&eacute; de tri principale, le second <span class="LITERAL">&lt;xsl:sort&gt;</span> d&eacute;finit la cl&eacute; de tri secondaire, etc.</td></tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="TITLE">Cat&eacute;gorie</td>
</tr>
<tr>
<td colspan="2" class="description">
<p>Subinstruction (<span class="LITERAL">&lt;xsl:sort&gt;</span> appara&icirc;t toujours comme un enfant des &eacute;l&eacute;ments <span class="LITERAL">&lt;xsl:apply-templates&gt;</span> ou <span class="LITERAL">&lt;xsl:for-each&gt;</span>)</p>
</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="TITLE">Attributs obligatoires</td>
</tr>
<tr>
<td colspan="2" class="description">
<p>Aucun.</p>
</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="TITLE">Attributs facultatifs</td>
</tr>
<tr>
<td colspan="2" class="description">
<dl>
<dt>
select
</dt>
<dd>
Une expression XPath qui d&eacute;finit les n&oelig;uds &agrave; trier.
<P></p>
<dt>
lang
</dt>
<dd>
Une cha&icirc;ne qui d&eacute;finit le langage utilis&eacute; par le tri. Les codes de langage sont d&eacute;finis dans RFC1766, disponible &agrave; l'adresse suivante <systemitem role="url">http://www.ietf.org/rfc/rfc1766.txt</systemitem> .
<P></p>
<dt>
data-type
</dt>
<dd>
Un attribut qui d&eacute;finit le type d'&eacute;l&eacute;ments &agrave; trier. Les valeurs admises sont <span class="LITERAL">number</span> et <span class="LITERAL">text</span>&nbsp;; la valeur par d&eacute;faut est <span class="LITERAL">text</span>. Un processeur XSLT a &eacute;galement la possibilit&eacute; de prendre en charge d'autres valeurs. Trier les valeurs <span class="LITERAL">32 10 120</span> avec <span class="LITERAL">data-type= &quot; text &quot;</span> renvoie <span class="LITERAL">10 120 32</span>, alors que <span class="LITERAL">data-type= &quot; number &quot;</span> renvoie <span class="LITERAL">10 32 120</span>.
<P></p>
<dt>
order
</dt>
<dd>
un attribut qui d&eacute;finit l'ordre du tri. Les valeurs admises sont <span class="LITERAL">ascending</span> et <span class="LITERAL">descending</span>.
<P></p>
<dt>
case-order
</dt>
<dd>
Un attribut qui d&eacute;finit l'ordre dans lequel les majucules et minuscules sont tri&eacute;es. Les valeurs admises sont <span class="LITERAL">upper-first</span> et <span class="LITERAL">lower-first</span>.
<P></p>
</dl>
</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="TITLE">Contenu</td>
</tr>
<tr>
<td colspan="2" class="description">
<p>Aucun.</p>
</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="TITLE">Appara&icirc;t dans</td>
</tr>
<tr>
<td colspan="2" class="description">
<p>
<span class="LITERAL">&lt;xsl:apply-templates&gt;</span> et <span class="LITERAL">&lt;xsl:for-each&gt;</span>.</p>
</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="TITLE">D&eacute;fini dans</td>
</tr>
<tr>
<td colspan="2" class="description">
<p>XSLT section 10, Tri.</p>
</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="TITLE">Exemple</td>
</tr>
<tr>
<td colspan="2" class="description">
<p>La feuille de style suivante illustre le fonctionnement de l'&eacute;l&eacute;ment <span class="LITERAL">&lt;xsl:sort&gt;</span>&nbsp;:</p>
<span class="PROGRAMLISTING"><pre>
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;xsl:stylesheet version=&quot;1.0&quot; xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&gt;

  &lt;xsl:output method=&quot;text&quot;/&gt;

  &lt;xsl:variable name=&quot;newline&quot;&gt;
&lt;xsl:text&gt;
&lt;/xsl:text&gt;
  &lt;/xsl:variable&gt;

  &lt;xsl:template match=&quot;/&quot;&gt;
    &lt;xsl:value-of select=&quot;$newline&quot;/&gt;
    &lt;xsl:call-template name=&quot;ascending-alpha-sort&quot;&gt;
      &lt;xsl:with-param name=&quot;items&quot; select=&quot;/sample/textlist/listitem&quot;/&gt;
    &lt;/xsl:call-template&gt;
    &lt;xsl:call-template name=&quot;ascending-alpha-sort&quot;&gt;
      &lt;xsl:with-param name=&quot;items&quot; select=&quot;/sample/numericlist/listitem&quot;/&gt;
    &lt;/xsl:call-template&gt;
    &lt;xsl:call-template name=&quot;ascending-numeric-sort&quot;&gt;
      &lt;xsl:with-param name=&quot;items&quot; select=&quot;/sample/numericlist/listitem&quot;/&gt;
    &lt;/xsl:call-template&gt;
    &lt;xsl:call-template name=&quot;descending-alpha-sort&quot;&gt;
      &lt;xsl:with-param name=&quot;items&quot; select=&quot;/sample/textlist/listitem&quot;/&gt;
    &lt;/xsl:call-template&gt;
  &lt;/xsl:template&gt;

  &lt;xsl:template name=&quot;ascending-alpha-sort&quot;&gt;
    &lt;xsl:param name=&quot;items&quot;/&gt;
    &lt;xsl:text&gt;Ascending text sort:&lt;/xsl:text&gt;
    &lt;xsl:value-of select=&quot;$newline&quot;/&gt;
    &lt;xsl:for-each select=&quot;$items&quot;&gt;
      &lt;xsl:sort select=&quot;.&quot;/&gt;
      &lt;xsl:value-of select=&quot;.&quot;/&gt;
      &lt;xsl:value-of select=&quot;$newline&quot;/&gt;
    &lt;/xsl:for-each&gt;
    &lt;xsl:value-of select=&quot;$newline&quot;/&gt;
  &lt;/xsl:template&gt;

  &lt;xsl:template name=&quot;descending-alpha-sort&quot;&gt;
    &lt;xsl:param name=&quot;items&quot;/&gt;
    &lt;xsl:text&gt;Descending text sort:&lt;/xsl:text&gt;
    &lt;xsl:value-of select=&quot;$newline&quot;/&gt;
    &lt;xsl:for-each select=&quot;$items&quot;&gt;
      &lt;xsl:sort select=&quot;.&quot; order=&quot;descending&quot;/&gt;
      &lt;xsl:value-of select=&quot;.&quot;/&gt;
      &lt;xsl:value-of select=&quot;$newline&quot;/&gt;
    &lt;/xsl:for-each&gt;
    &lt;xsl:value-of select=&quot;$newline&quot;/&gt;
  &lt;/xsl:template&gt;

  &lt;xsl:template name=&quot;ascending-numeric-sort&quot;&gt;
    &lt;xsl:param name=&quot;items&quot;/&gt;
    &lt;xsl:text&gt;Ascending numeric sort:&lt;/xsl:text&gt;
    &lt;xsl:value-of select=&quot;$newline&quot;/&gt;
    &lt;xsl:for-each select=&quot;$items&quot;&gt;
      &lt;xsl:sort select=&quot;.&quot; data-type=&quot;number&quot;/&gt;
      &lt;xsl:value-of select=&quot;.&quot;/&gt;
      &lt;xsl:value-of select=&quot;$newline&quot;/&gt;
    &lt;/xsl:for-each&gt;
    &lt;xsl:value-of select=&quot;$newline&quot;/&gt;
  &lt;/xsl:template&gt;

&lt;/xsl:stylesheet&gt;</pre></span>
<p>La feuille de style d&eacute;finit trois mod&egrave;les nomm&eacute;s, chacun triant les &eacute;l&eacute;ments <span class="LITERAL">&lt;listitem&gt;</span> dans un ordre diff&eacute;rent ou avec un <span class="LITERAL">data-type</span> diff&eacute;rent. La feuille de style est appliqu&eacute;e au document suivant&nbsp;:</p>
<span class="PROGRAMLISTING"><pre>
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;sample&gt;
  &lt;numericlist&gt;
    &lt;listitem&gt;1&lt;/listitem&gt;
    &lt;listitem&gt;3&lt;/listitem&gt;
    &lt;listitem&gt;23&lt;/listitem&gt;
    &lt;listitem&gt;120&lt;/listitem&gt;
    &lt;listitem&gt;2&lt;/listitem&gt;
  &lt;/numericlist&gt;
  &lt;textlist&gt;
    &lt;listitem&gt;3&lt;/listitem&gt;
    &lt;listitem&gt;apple&lt;/listitem&gt;
    &lt;listitem&gt;orange&lt;/listitem&gt;
    &lt;listitem&gt;dragonfruit&lt;/listitem&gt;
    &lt;listitem&gt;carambola&lt;/listitem&gt;
  &lt;/textlist&gt;
&lt;/sample&gt;</pre></span> <!--<?troff .Nd 10?>-->
<p>Les r&eacute;sultats sont les suivants&nbsp;:</p>
<span class="PROGRAMLISTING"><pre>

Ascending text sort:
3
apple
carambola
dragonfruit
orange

Ascending text sort:
1
120
2
23
3

Ascending numeric sort:
1
2
3
23
120

Descending text sort:
orange
dragonfruit
carambola
apple
3</pre></span>
<p>L'attribut <span class="LITERAL">data-type=&quot;numeric&quot;</span> g&eacute;n&egrave;re le tri des donn&eacute;es dans un ordre num&eacute;rique. </p>
</td>
</tr>
</table>
</div>
</body>
</html>
