XQuery: использование xs: time ($ arg) и приведение к xs: time - PullRequest
0 голосов
/ 13 июня 2019

В одном из моих проектов я использую

  • 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 вместо этого?

...