有没有办法强制xsd:date或xsd:datetime字段在xml有效负载中包含时区?
我尝试的所有验证器,日食,骆驼等都接受这些字段,无论是否附加时区。
我想强制要求XML中始终存在时区。
编辑:
我希望有一种处理这种情况的标准化方法。
最后,因为我使用1.0 XSD,所以使用以下解决方案:
<xs:simpleType name="dateNoTz">
<xs:restriction base="xs:date">
<xs:pattern value="\d{4}-[01]\d-[0-3]\d"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="dateTimeNoTz">
<xs:restriction base="xs:dateTime">
<xs:pattern value="\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d(.\d?\d?\d?)"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="dateTimeTz">
<xs:restriction base="xs:dateTime">
<xs:pattern value="\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d(.\d?\d?\d?)?((\+[01]\d:[0-5]\d)|Z)"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="dateTz">
<xs:restriction base="xs:date">
<xs:pattern value="\d{4}-[01]\d-[0-3]\d((\+[01]\d:[0-6]\d)|Z)"/>
</xs:restriction>
</xs:simpleType>
答案 0 :(得分:2)
是的,可以通过向简单类型添加XSD pattern facet来完成此操作。如果添加一个在词法上要求值包含时区信息的模式构面,则需要此类型的每个值来满足此模式构面,因此必须包含时区信息。
答案 1 :(得分:2)
在XSD 1.0中,您只能使用模式(正则表达式)来完成。
在XSD 1.1中有一个新的方面explicitTimeZone
。