| <xsl:sort> | |
| Définit une clé de tri pour le contexte actuel. Cet élément apparaît comme un enfant des éléments <xsl:apply-templates> ou <xsl:for-each>. Dans ces éléments, le premier <xsl:sort> définit la clé de tri principale, le second <xsl:sort> définit la clé de tri secondaire, etc. | |
| Catégorie | |
|
Subinstruction (<xsl:sort> apparaît toujours comme un enfant des éléments <xsl:apply-templates> ou <xsl:for-each>) |
|
| Attributs obligatoires | |
|
Aucun. |
|
| Attributs facultatifs | |
|
|
| Contenu | |
|
Aucun. |
|
| Apparaît dans | |
|
<xsl:apply-templates> et <xsl:for-each>. |
|
| Défini dans | |
|
XSLT section 10, Tri. |
|
| Exemple | |
|
La feuille de style suivante illustre le fonctionnement de l'élément <xsl:sort> :
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:variable name="newline">
<xsl:text>
</xsl:text>
</xsl:variable>
<xsl:template match="/">
<xsl:value-of select="$newline"/>
<xsl:call-template name="ascending-alpha-sort">
<xsl:with-param name="items" select="/sample/textlist/listitem"/>
</xsl:call-template>
<xsl:call-template name="ascending-alpha-sort">
<xsl:with-param name="items" select="/sample/numericlist/listitem"/>
</xsl:call-template>
<xsl:call-template name="ascending-numeric-sort">
<xsl:with-param name="items" select="/sample/numericlist/listitem"/>
</xsl:call-template>
<xsl:call-template name="descending-alpha-sort">
<xsl:with-param name="items" select="/sample/textlist/listitem"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="ascending-alpha-sort">
<xsl:param name="items"/>
<xsl:text>Ascending text sort:</xsl:text>
<xsl:value-of select="$newline"/>
<xsl:for-each select="$items">
<xsl:sort select="."/>
<xsl:value-of select="."/>
<xsl:value-of select="$newline"/>
</xsl:for-each>
<xsl:value-of select="$newline"/>
</xsl:template>
<xsl:template name="descending-alpha-sort">
<xsl:param name="items"/>
<xsl:text>Descending text sort:</xsl:text>
<xsl:value-of select="$newline"/>
<xsl:for-each select="$items">
<xsl:sort select="." order="descending"/>
<xsl:value-of select="."/>
<xsl:value-of select="$newline"/>
</xsl:for-each>
<xsl:value-of select="$newline"/>
</xsl:template>
<xsl:template name="ascending-numeric-sort">
<xsl:param name="items"/>
<xsl:text>Ascending numeric sort:</xsl:text>
<xsl:value-of select="$newline"/>
<xsl:for-each select="$items">
<xsl:sort select="." data-type="number"/>
<xsl:value-of select="."/>
<xsl:value-of select="$newline"/>
</xsl:for-each>
<xsl:value-of select="$newline"/>
</xsl:template>
</xsl:stylesheet>
La feuille de style définit trois modèles nommés, chacun triant les éléments <listitem> dans un ordre différent ou avec un data-type différent. La feuille de style est appliquée au document suivant :
<?xml version="1.0"?>
<sample>
<numericlist>
<listitem>1</listitem>
<listitem>3</listitem>
<listitem>23</listitem>
<listitem>120</listitem>
<listitem>2</listitem>
</numericlist>
<textlist>
<listitem>3</listitem>
<listitem>apple</listitem>
<listitem>orange</listitem>
<listitem>dragonfruit</listitem>
<listitem>carambola</listitem>
</textlist>
</sample>
Les résultats sont les suivants : 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 L'attribut data-type="numeric" génère le tri des données dans un ordre numérique. |
|