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



当我像下面这样设置year部分(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">

对不起,为什么您认为20512-07-11是无效日期?天文学家可能非常热衷于维护显示日食将在那一天发生的数据。

如果您想将日期限制在一个特定的范围内,例如在2100年之前,那么您应该使用从xs:date派生的simpleType,该simpleType使用maxExclusive方面来限制值的范围。

这是您的验证器中的NOT缺陷(顺便说一句,您应该指出您正在使用哪个验证器)。其他验证器(错误)的行为与您预期的一致;例如,.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规范的这一部分,D3.3部分,它清楚地说明了您的值是有效的。

最新更新