В одном из моих проектов я использую
- XQuery 3.0
- Saxon HE 9.8 (переходный из-за верблюда)
- Spring Boot 2.1.0
- Apache Camel 2.22.0
Я использую XML-сообщение, в котором содержится следующий элемент:
<mytimeelement></mytimeelement>
Как видите, он пустпоэтому я подумал, что следующее XQuery-выражение вернет пустую последовательность :
$transaction/*:flags/*:mytimeelement
К сожалению, это не так, потому что вызов XQuery-Expressionсверху в xs:time($arg)
как:
xs:time($transaction/*:flags/*:mytimeelement)
не возвращает пустую последовательность, как я ожидал, но вместо этого возвращает исключение:
Invalid time "" (too short)
Дело в том, что я хочу использовать xs:time($arg)
в качестве проверки, что если значение находится в элементе, оно должно иметь правильный формат, но если оно пустое, это не имеет значения.Так что я сделал это не только с xs:time
, но и с xs:date
и xs:decimal
.
Мой вопрос теперь таков: почему выражение возвращает не пустую последовательность, а пустую строку?Или мне лучше использовать cast as xs:time
вместо этого?