XQuery XML Alphabetizer игнорирует "The" как первое слово в имени при сортировке - PullRequest
1 голос
/ 06 апреля 2019

Это своего рода повтор из старого вопроса, который у меня был здесь , где Майкл Кей предоставил отличное решение XQuery для сортировки моего xml-файла.Однако теперь я надеюсь использовать тот же код и игнорировать «The» в качестве первого слова в имени при сортировке, но не удалять его из файла.
Вот код, предоставленный Майклом:

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

Я давно гуглил смерть из-за этого.Я даже не могу понять, что такое правильный термин, когда «The» используется в качестве первого слова в названии или названии.У него должно быть имя LOL.Спасибо за любую помощь, еще раз команда.Цените всю помощь, которую вы, ребята, оказываете.

Ответы [ 2 ]

3 голосов
/ 06 апреля 2019

В качестве альтернативы предложению Джо вы также можете использовать функцию replace с шаблоном '^The ', поскольку он соответствует только The в начале строки:

for $i in //item order by replace($i/name, '^The ', '') return $i
3 голосов
/ 06 апреля 2019

Чтобы игнорировать «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>
...