如何用XSLT给XML排序 XSLT sort用法

XSLT排序核心是xsl:sort元素,须置于xsl:for-each或xsl:apply-templates内;支持按元素、属性、表达式排序,可指定data-type和order实现数值/字符串/日期等多类型升降序,允许多级排序。

用XSLT给XML排序,核心是 xsl:sort 元素,它必须放在 xsl:for-eachxsl:apply-templates 内部,用来指定排序依据和规则。

基本排序语法

最常用的是按元素文本内容升序排列:

  •   
  •   

这里 select="title" 表示按 子元素的文本值排序,默认升序(order="ascending"),不写也可省略。

控制排序方向和数据类型

数值、日期、字符串默认都按字符串比较,容易出错。需显式指定 data-typeorder

  • —— 按数字降序排价格
  • —— 强制按字符串升序(如 ISO 格式日期可直接比)
  • —— 提取年份再数值排序

多级排序(主序+次序)

多个 xsl:sort 元素顺序即优先级顺序。例如先按作者姓氏、再按书名:

  •   
  •   
  •    by

注意:第二级排序只在第一级相同时生效,逻辑与 SQL 中 ORDER BY last_name, title 一致。

按属性或表达式排序

除了子元素,还能按属性值或任意 XPath 表达式排序:

  • —— 按 id 属性数值排序
  • —— 拼接后按全名排序
  • —— 按标题长度降序

只要 select 返回一个有效值(字符串、数字或布尔值),就能作为排序键。