问题
我正在使用 Saxon-EE 11,我的平台语言是en-us
.
我正在尝试<xsl:sort>
通过指定 UCA 排序规则来实现指令的自定义排序行为。忽略 XML 文档详细信息,只讨论核心的逐字符串比较问题,我想要这些字符串:
ABSENTEES
ABSENTEE VOTING
MINNEAPOLIS TEACHERS RETIREMENT FUND ASSOCIATION (MTRFA)
MINNEAPOLIS-SAINT PAUL INTERNATIONAL AIRPORT
MINNEAPOLIS/SAINT PAUL HOUSING FINANCE BOARD
MINNEAPOLIS
MINNEAPOLIS PORT AUTHORITY
按此顺序排序:
ABSENTEE VOTING
ABSENTEES
MINNEAPOLIS
MINNEAPOLIS PORT AUTHORITY
MINNEAPOLIS/SAINT PAUL HOUSING FINANCE BOARD
MINNEAPOLIS-SAINT PAUL INTERNATIONAL AIRPORT
MINNEAPOLIS TEACHERS RETIREMENT FUND ASSOCIATION (MTRFA)
尝试将规则翻译成英文:
- 与另一个字符串共享公共前缀但在空格处分歧的字符串应排序在另一个字符串之前(
ABSENTEE VOTING
beforeABSENTEES
) - 连字符和斜杠应被视为与空格相同。
我尝试过的
UCA 排序规则可以正确http://www.w3.org/2013/collation/UCA?alternate=shifted
处理MINNEAPOLIS*
字符串,但它会ABSENTEES
放在ABSENTEE VOTING
.
裸 UCA 排序规则可以正确http://www.w3.org/2013/collation/UCA
处理ABSENTEES
和ABSENTEE VOTING
,但会将MINNEAPOLIS/SAINT PAUL
和MINNEAPOLIS-SAINT PAUL
字符串放置在带有MINNEAPOLIS
和 空格字符的任何内容之后。
我尝试了一些其他参数组合,但它们都没有产生更接近我正在寻找的结果。我几乎要放弃并在应用排序规则之前实现自定义预处理,或者直接使用 Java 实现。
如果我正在寻找的内容确实无法通过 UCA 排序规则实现,那么很高兴知道这一点。
使用以下输入:
XML
以及以下样式表:
XSLT 2.0
我得到:
结果