XSD验证xs:date和xs:dateTime的格式错误

时间:2012-07-27 15:39:18

标签: xml xsd

当我设置如下所示的部分(20512或类似内容)时,XSD仍会验证XML。

任何想法。

这是一个缺陷,还是我必须使用给定模式的 simpleType

由于

XSD

<xs:attribute name="date" type="xs:date" />

<xs:attribute name="timestamp" type="xs:dateTime" />

XML

<store date="20512-07-11" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="items.xsd">

<store timestamp="20512-07-11T21:50:16" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="items.xsd">

2 个答案:

答案 0 :(得分:10)

抱歉,为什么你认为20512-07-11是无效日期?天文学家可能非常热衷于保持数据显示日期将发生日食。

如果要将日期限制在特定范围内,例如在2100年之前,则应使用从xs:date派生的simpleType,使用maxExclusive facet限制值的范围。

答案 1 :(得分:4)

验证器中存在 NOT 缺陷(顺便说一句,您应该指出您正在使用的验证器)。其他验证器(mis)的行为与您期望的一样;例如,.NET会抱怨The value '20512-07-11' is invalid according to its datatype 'http://www.w3.org/2001/XMLSchema:date' - The string '20512-07-11' is not a valid XsdDateTime value.

请参阅XSD规范的this section,第D3.3节,其中明确指出您的值有效。