1

这是来自 XML 文档的示例。

<A>
  <Value>B2.B1-1.C2-0.D20</Value>
</A>
<A>
  <Value>A2.B15-1.C2-0.D20</Value>
</A>
<A>
  <Value>A2.B2-1.C2-0.D20</Value>
</A>

等等。

我需要将其排序为

A2.B2-1.C2-0.D20 A2.B15-1.C2-0.D20 B2.B1-1.C2-0.D20

点分隔组件的数量未知,其中的数字可以是任何格式(1-1、11、11abcd)。正如人们通常期望的那样,排序是直观的。首先它是基于字母和数字捆绑在一起阅读(B2和B15是正确的顺序。词序B15,B2不正确)

这可以用 XSLT 1.0 完成吗?

4

1 回答 1

0

XSLT 没有精确定义排序应该如何操作;结果是实现定义的。

在最近的 Saxon 版本中,有一个排序规则可以满足您的需求,但它假定 XSLT 2.0;事实上,它假设撒克逊人。

在 XSLT 1.0 中以可移植的方式执行此操作并不容易,尤其是当您无法调用递归模板来计算排序键时。

于 2012-05-30T09:24:23.547 回答