忽略xsl:sort中的特殊符号

时间:2013-06-10 07:37:49

标签: xml xslt xslt-1.0

我有问题。 有一些项目,包含这样的术语:

<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进行操作? 非常感谢!

2 个答案:

答案 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(),"&apos;", "")'/>
</xsl:apply-templates>

答案 1 :(得分:0)

我认为你会发现真正的自然语言排序,在例如书籍标题被忽略的水平上忽略了一个初始的“The”或“A”,超出了大多数XSLT引擎的能力 - 并且对于重要的是,大多数通用排序实用程序。这是因为它非常依赖于应用程序。例如,检查您的电话簿如何对“McMillan”和“Macmillan”进行排序。

如果您可以编写一个规范化数据的函数(例如,通过删除不需要的前导明确或不定的文章),那么在XSLT 2.0中,您可以在xsl:sort的select属性中调用此函数以在排序之前规范化该键