我有问题。 有一些项目,包含这样的术语:
<term>Emploee's earnings...</term>
<term>Emploee Withholdings...</term>
<term>...value of an...</term>
<term>...value of a...</term>
按照逻辑,“an”文章应该在“a”之后。此外,“Emploee's”应该在“Emploee”之后。 问题是如何使用xsl:sort进行操作? 非常感谢!
答案 0 :(得分:0)
我真的不明白你的问题是什么。 在:apply-templates(或for-each)中使用xsl:sort应根据需要进行排序。
<xsl:apply-templates select="term" >
<xsl:sort select="text()"/>
</xsl:apply-templates>
要调整语言特定处理,您可以添加“lang”属性。
如果您想忽略某些角色,可以使用translate()
忽略撇号的示例(此处不需要):
<xsl:apply-templates select="term" >
<xsl:sort select='translate(text(),"'", "")'/>
</xsl:apply-templates>
答案 1 :(得分:0)
我认为你会发现真正的自然语言排序,在例如书籍标题被忽略的水平上忽略了一个初始的“The”或“A”,超出了大多数XSLT引擎的能力 - 并且对于重要的是,大多数通用排序实用程序。这是因为它非常依赖于应用程序。例如,检查您的电话簿如何对“McMillan”和“Macmillan”进行排序。
如果您可以编写一个规范化数据的函数(例如,通过删除不需要的前导明确或不定的文章),那么在XSLT 2.0中,您可以在xsl:sort的select属性中调用此函数以在排序之前规范化该键