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
这有点像 run-on 来自我
这是迈克尔提供的代码:
<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