XQuery XML Alphabetizer在排序时忽略“The”作为名称中的第一个单词

问题描述 投票:1回答:2

这是一个问题,我从here的旧问题,其中Michael Kay提供了一个伟大的XQuery解决方案来排序我的xml文件。但是我现在希望使用相同的代码并让它在排序时将“The”忽略为名称中的第一个单词,但不将其从文件中删除。 以下是Michael提供的代码:

    <items>{
      for $i in //item order by $i/name return $i
    }</items>

我一直在谷歌上搜索死亡。当“The”被用作标题或名称中的第一个单词时,我甚至无法弄清楚正确的术语是什么。它必须有一个名字大声笑。再次感谢团队的任何帮助。感谢你们提供的所有帮助。

xml xquery alphabetized
2个回答
3
投票

要忽略标题中的“The”,只需添加一个带有调整后标题的新变量,并在order by子句中使用它:

<items>{
    for $i in //item 
    let $name-sort-key := 
        if (starts-with($i/name, "The ")) then
            substring-after($i/name, "The ")
        else
            $i/name
    order by $name-sort-key
    return 
        $i
}</items>

3
投票

作为Joe的建议的替代,你也可以使用replace模式的'^The '函数,因为它只匹配字符串开头的The

for $i in //item order by replace($i/name, '^The ', '') return $i
© www.soinside.com 2019 - 2024. All rights reserved.