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.

Dernières Recherches

Cet article a été rédigé dans la rubrique XML - XSLT avec les mots clés , , , , . Ajouter aux favoris la page.

2 Reponses a XSLT : Tri avec accents

  1. beunwa says:

    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 says:

    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 *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>