如何在XSLT中更改自然排序顺序

时间:2014-02-06 10:32:41

标签: xml xslt-2.0

我一直在使用<xsl:sort select="."/>方法对某些值进行排序,我可以强制排序方法遵循以下顺序,

  i) sort numbers first
  ii) next greek symbols
  iii) and next english alphabets

我得到的是输出,

 i) numbers
 ii) alphabets
 iii) greek symbols

1 个答案:

答案 0 :(得分:1)

您可以使用三个xsl:sort,其中第一个尝试删除除数字之外的任何内容,例如

<xsl:sort select="xs:integer(replace(., '[^0-9]+', ''))"/>

然后添加第二种

<xsl:sort select="replace(., '[^0-9a-z]+', '', 'i')"/>

对剩余的希腊字符进行排序,最后进行

<xsl:sort select="replace(., '[^a-z]+', '', 'i')"/>

对英文字母进行排序。如果需要,正则表达式还允许您定义希腊字母的范围,但我不知道有unicode数字,所以如果您需要,可以在unicode.org查找。