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

XQuery XML Alphabetizer ignoring "The" as first word in name while sorting

这有点像 run-on 来自我 的一个旧问题,其中 Michael Kay 提供了一个很好的 XQuery 解决方案来排序我的 xml 文件。但是,我现在希望使用相同的代码并让它在排序时忽略 "The" 作为名称中的第一个单词,但不会将其从文件中删除。
这是迈克尔提供的代码:

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

很长一段时间以来,我一直在用谷歌搜索死亡原因。当 "The" 被用作标题或名称中的第一个词时,我什至无法弄清楚正确的术语是什么。它必须有一个名字大声笑。再次感谢您的帮助。感谢你们提供的所有帮助。

要忽略标题中的“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>

作为 Joe 的建议的替代方法,您还可以使用带有模式 '^The 'replace 函数,因为它只匹配字符串开头的 The

for $i in //item order by replace($i/name, '^The ', '') return $i