我有一个简单的问题:使用xsd:dayTimeDuration()(ISO8601格式)可以指定的最长/“无限”持续时间是什么?
谢谢, 微米。
答案 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允许的持续时间远远大于宇宙的年龄,而撒克逊允许的最大值仅略小于宇宙的年龄。