Вы, конечно, можете попытаться преобразовать формат в xs:date
и использовать order by
например,
let $seq := ("2018 Apr", "2018 Dec", "2018 Feb", "2018 Nov"),
$month-order := ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')
for $date in $seq
order by xs:date(
substring($date, 1, 4)
|| '-'
||format-number(index-of($month-order, substring($date, 6, 3)), '00')
|| '-01')
return $date
дает
"2018 Feb"
"2018 Apr"
"2018 Nov"
"2018 Dec"
Обратите внимание, что я упростил задачу, предположивпоследовательное трехбуквенное название месяца.И я не знаком с конкретным процессором XQuery Marklogic, который вы используете, имеет ли он некоторые пользовательские функции синтаксического анализа даты, которые облегчают задачу, я просто использовал функции и выражения XQuery 3.1.Рабочая демонстрация на https://xqueryfiddle.liberty -development.net / 948Fn59