可以使用xsd:dayTimeDuration()指定的最长持续时间

时间:2011-12-25 08:24:30

标签: xslt xpath xsd saxon

我有一个简单的问题:使用xsd:dayTimeDuration()(ISO8601格式)可以指定的最长/“无限”持续时间是什么?

谢谢, 微米。

1 个答案:

答案 0 :(得分:4)

W3C XSD specification不限制/指定xs的最大值:dayTimeDuration

  

年,月,日,小时和分钟组件的值是   不受限制但允许任意无符号整数,即   符合模式[0-9] +。

的整数

但是,特定实现可能会强制执行其依赖于实现的限制。

例如,Saxon允许此值

xs:dayTimeDuration('P999999999DT2H30M10S')

但会在此值上引发错误(将一个9位数添加到days组件中):

xs:dayTimeDuration('P9999999999DT2H30M10S')
  

FORG0001:无效的持续时间值'P9999999999DT2H30M10S'(非数字   组分)

XQSharp允许更大的值 - 接受

xs:dayTimeDuration('P999999999999999999DT2H30M10S')

但是,days组件中的一位数会引发错误

xs:dayTimeDuration('P9999999999999999999DT2H30M10S')

FODT0002: Underflow or overflow in construction of 'dayTimeDuration' in namespace 'http://www.w3.org/2001/XMLSchema' from value 'P9999999999999999999DT2H30M10S'.

这两个XPath实现都允许比实际需要的更大的价值空间 - 只要考虑到宇宙的年龄估计不超过140亿年,是5124000000000天。

XQSharp允许的持续时间远远大于宇宙的年龄,而撒克逊允许的最大值仅略小于宇宙的年龄。