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.
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
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 :'( )