Хорошо, я посмотрел на это, и я думаю, что вы сможете выполнить свой запрос, определив свою функцию как
declare function tns:isEmptyDate($dob as xs:date?) as xs:boolean
Обратите внимание на? после типа - это означает, что аргумент может быть пустой последовательностью.
Я проверил это в Oxygen, используя Saxon-B ... извините, у меня нет доступа к программному обеспечению, которое вы используете.
Вот мое определение функции.
declare function tns:isEmptyDate($dob as xs:date?) as xs:boolean {
let $empty := if (empty($dob))
then true()
else false()
return $empty
};
Запуск с этим файлом:
<?xml version="1.0" encoding="UTF-8"?>
<datetime>2002-09-24</datetime>
возвращает true и работает с этим файлом:
<?xml version="1.0" encoding="UTF-8"?>
<dontmatch>2002-09-24</dontmatch>
возвращает ложь.
Запуск той же функции без вопросительного знака, на втором документе, ошибки с:
Серьезность: ошибка. Описание: пустая последовательность не допускается в качестве первого аргумента tns: isEmptyDate ()