这是一个问题,我从here的旧问题,其中Michael Kay提供了一个伟大的XQuery解决方案来排序我的xml文件。但是我现在希望使用相同的代码并让它在排序时将“The”忽略为名称中的第一个单词,但不将其从文件中删除。 以下是Michael提供的代码:
<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的建议的替代,你也可以使用replace
模式的'^The '
函数,因为它只匹配字符串开头的The
:
for $i in //item order by replace($i/name, '^The ', '') return $i