XQuery:使用xs:time($ arg)与强制转换为xs:time

时间:2019-06-13 11:58:46

标签: spring-boot apache-camel saxon xquery-3.0

在我正在使用的一个项目中

  • XQuery 3.0
  • Saxon HE 9.8(由于骆驼而具有传递性)
  • Spring Boot 2.1.0
  • Apache Camel 2.22.0

我使用其中发生以下元素的XML消息:
<mytimeelement></mytimeelement>

您可以看到它为空,因此我认为以下XQuery-Expression将返回空序列

$transaction/*:flags/*:mytimeelement

不幸的是,情况似乎并非如此,因为在xs:time($arg)中从上方调用XQuery-Expression,例如:

xs:time($transaction/*:flags/*:mytimeelement)

不返回我期望的空序列,而是返回一个异常:

Invalid time "" (too short)

问题是:我想使用xs:time($arg)作为验证,如果元素中的值必须具有正确的格式,但是如果为空则没有关系。因此,我不仅使用xs:time,而且还使用xs:datexs:decimal进行了此操作。

我现在的问题是:为什么表达式不返回空序列而是空字符串?还是应该改用cast as xs:time

0 个答案:

没有答案