Хорошо, я думаю, что я просто решил ее с помощью следующей пользовательской функции, которую я теперь использую в алгоритме вместо официального xquery-> functx: add-months (date, int)
declare function local:addMonths($input as xs:date?, $amount as xs:integer?)
as xs:date?
{
let $outputN := functx:add-months($input,$amount)
let $outputLD := functx:last-day-of-month(functx:add-months($input,$amount))
return if($input = functx:last-day-of-month($input)) then $outputLD else $outputN
};
Требуется дополнительное тестирование, поскольку весь алгоритм, стоящий за этими модификациями, намного сложнее, но первый запуск выглядел отлично
Целью всего алгоритма было изменение атрибутов даты в .xml путем их перемещения, например. дата = "2018-11-28" (обычно) 3 месяца в будущем
Предполагается, что даты должны оставаться относительно источника, что означает перемещение "2018-11-28" 3 месяца вперед должно привести к:
"2019-02-26" (за 2 дня до последнего дня месяца!)