在 XSLT 2.0 中使用自定义排序

XSLT 2.0 的一项重要改进是更好的国际化支持,特别是排序和比较文本。这个看起来很简单的任务在某些语言中非常复杂,比如,上下文的不同决定着是否要考虑重音字符。 Á À A 是同一个字符吗?有时候必须当作一个字符,尽管实际上是三个不同的代码点。多数语言(包括 XSLT 1.0)中的简单字符串比较函数不足以承担这项任务。本文通过例子说明如何编写自定义的排序函数,然后从 XSLT 2.0 样式表中调用它。

自定义排序

本文将用到 XSLT 2.0 和 XPath 2.0 的一些新特性。XSLT 2.0 有很多函数和元素允许指定排序。排序是任何排序算法的核心。排序函数 比较两个项返回三个值中的一个。如果前项在后项之前,函数返回一个小于零的值。如果两个项相同,函数返回零。当然,如果前项在后项之后,返回值就大于零。

本文中的例子采用基于 Java 的 Saxon XSLT 2.0 处理程序。Saxon 实现了 XSLT 2.0 规范(其作者 Michael Kay 是 XSLT 2.0 规范的编辑),包括自定义排序。要在 Saxon 中使用自定义排序,需要指定实现排序函数的 Java 类名。

我们将举三个例子:

  • 排序一组西班牙文单词
  • 比较德语词汇
  • 排序一组乐队和音乐家,忽略乐队名称开始位置的文本 “The 
 

本文转自:IBM developerWorks 中国

请点击此处查看全文

你可能感兴趣的:(在 XSLT 2.0 中使用自定义排序)