2
需要注意的是我一个非常类似的问题早先提出,但要求也从此改变字母排序重新
Alphanumeric sort on mixed string value
在需求的主要区别是现在,源XML可以包括与形式所有字符串在form_name或所有整数。
的FORM_NAME可以开季字母和数字可以以任意顺序:
XX ## ##
XX XX ##
XX XX ###
XX XX ## ##
XX ###
XX XXXX
## XXX
XXX###
XXX
###
由于XML:
<forms>
<FORM lob="BO" form_name="AI OM 10"/>
<FORM lob="BO" form_name="CL BP 03 01"/>
<FORM lob="BO" form_name="AI OM 107"/>
<FORM lob="BO" form_name="CL BP 00 02"/>
<FORM lob="BO" form_name="123 DDE"/>
<FORM lob="BO" form_name="CL BP 00 02"/>
<FORM lob="BO" form_name="AI OM 98"/>
<FORM lob="BO" form_name="543 ZZE"/>
<FORM lob="BO" form_name="543 ABC"/>
<FORM lob="BO" form_name="256"/>
<FORM lob="BO" form_name="ABC"/>
</forms>
输出应该是:
<forms>
<FORM lob="BO" form_name="256"/>
<FORM lob="BO" form_name="123 DDE"/>
<FORM lob="BO" form_name="543 ABC"/>
<FORM lob="BO" form_name="543 ZZE"/>
<FORM lob="BO" form_name="ABC"/>
<FORM lob="BO" form_name="AI OM 10"/>
<FORM lob="BO" form_name="AI OM 98"/>
<FORM lob="BO" form_name="AI OM 107"/>
<FORM lob="BO" form_name="CL BP 00 02"/>
<FORM lob="BO" form_name="CL BP 00 02"/>
<FORM lob="BO" form_name="CL BP 03 01"/>
</forms>
结果应按以下顺序排列:
- 形成与仅整数
- 形式的开始与整数而且还包括字母字符(可以包括空格)
- 形式仅包括字母字符
- 形式的开始以字母字符,但还包括整数(可以包含空格)
因此,表单被分组/排序。我已经尝试了各种增强功能来提供我在前面提到的问题中提供的答案,但没有找到适合这种排序的正确过滤模式。 XSLT 2.0解决方案很好。
好问题,+1。看到我的答案是迄今唯一正确的解决方案。 :) – 2010-10-18 17:59:46