我在Python中有一个验证模块,它对XML文档执行一个XQuery,检查是否有<Start>
次在<End>
次之后,并返回它们的计数。查询如下:
for $d at $count in ./ty:Detections/Detection
where $d/Start > $d/End
return $count
现在,这对所有情况都很好,除了在结束时间后加上毫秒而不是开始时间,例如:
<Start>2009-02-23T02:53:14Z</Start>
<End>2009-02-23T02:53:14.226Z</End>
这总是返回True,即使很明显14小于14.22。
如果我在<Start>
时间上加上一个小数位,它是有效的——但是有更好的解决方案吗?你知道吗
假定
Start
和End
元素没有有效的模式绑定。在这种情况下,查询正在执行xs:untypedAtomic比较,它有效地比较字符串值,其中"Z"
比较大于"."
。你知道吗您需要的是xs:dateTime比较,因此您应该在将元素值强制转换为该类型之后比较它们。因此,查询应该如下所示:
相关问题 更多 >
编程相关推荐