当我像下面这样设置年部分(20512或类似的内容)时,XSD仍然验证。
任何想法。
这是一个缺陷还是我必须使用具有给定模式的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">发布于 2012-07-27 17:57:19
这是验证器中的而不是缺陷(顺便指出,您使用的是哪个验证器)。其他验证器(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规范的本节,D3.3节,其中明确说明您的值是有效的。
发布于 2012-07-27 21:54:54
对不起,你为什么认为20512-07-11是一个无效的日期?天文学家可能非常热衷于保存数据,显示日食将在那一天发生。
如果希望将日期限制在特定范围内,例如2100年之前,则应使用从xs: simpleType派生的simpleType,该日期使用maxExclusive facet限制值的范围。
https://stackoverflow.com/questions/11691158
复制相似问题