2010-02-18 7 views
3

Je suis en train de trier un document XML en utilisant xsl: sortIgnorer la casse tout en faisant xsl: sort

Mon exigence est d'ignorer le cas tout en faisant le genre. xsl: sort possède un attribut case-order qui permet de spécifier upper-first ou lower-first, ce qui ne m'aide pas.

J'ai aussi essayé d'utiliser la fonction traduire, quelque chose comme ceci:

<xsl:sort select="translate('abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ',sortOn)" order="ascending" />"; 

travail force soit.

Les idées sont appréciées.

+0

Quelle version de xslt utilisez-vous? – Josh

Répondre

5

Les paramètres de votre fonction de traduction sont dans le mauvais ordre.

<xsl:sort select="translate(sortOn 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')" order="ascending" /> 

Cette fonction est définie comme suit dans le XPath spec:

Fonction: string traduire (chaîne, chaîne , chaîne)

La fonction translate retourne la première chaîne d'argument avec occurrences de caractères dans le deuxième argument chaîne remplacée par le caractère à la position correspondante dans le troisième chaîne d'arguments.

+1

Cela a fonctionné. Je promets la prochaine fois que je vais RTFM :) – Nishan

0

Que diriez-vous de <xsl:sort select="lower-case(sortOn)"/>?

+0

Peut-être développer sur pourquoi cela fonctionne et pourquoi la méthode OP – wnnmaw

+0

«minuscule» n'est pas disponible dans XSL 1.0. – Jarekczek

Questions connexes