XSLT : Tri avec accents

En xsl, on peut avoir besoin de trier un xml par ordre alphabétique. Pour cela, il suffit d’utiliser la balise <xsl:sort>. Cependant, ce tri ne fonctionne pas avec des accents. Pour résoudre ce problème, il suffit de passer par une fonction qui va supprimer tous les accents.

<xsl:variable name= »lower » select= »‘abcdefghijklmnopqrstuvwxyzÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞß
áàâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕ' »/>

<xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZAAAAAAACEEEEIIIIDNOOOOOOUUUUYBS
AAAAAAACEEEEIIIIDNOOOOOOUUUYYBYRR'"/>
<xsl:for-each select="nom">
<xsl:sort select="translate(.,$lower,$upper)" order="ascending" data-type="text" />
<xsl:value-of select="."/>
</xsl:for-each>

En utilisant cette fonction, vous n’aurez plus de problème de tri, quelque soit la casse ou les accents.

2 Responses

  1. beunwa dit :

    Je persiste mais en utilisant collation= »unicode » dans ta balise xsl:sort tu devrais pouvoir trier en gardant les accents 🙂 et du coup ne plus te poser cette question.

    Quand a ton @ je ne pense pas que ca vienne de WP mais plutôt de ta chaîne de caractère en amont

  2. Tangui dit :

    J’ai testé en mettant collation= »unicode » et cela ne fonctionne pas…
    J’ai trouvé des infos/scripts qui auraient permis de le faire en utilisant http://saxon.sourceforge.net/, mais à priori cela ne marche plus (http://saxon.sourceforge.net/collation?lang=fr-FR renvoie une 404 :'( )

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *