在我的架构中,我想接受一个包含格式为date
或dateTime
的数据的元素。
例如,任何这些元素都应该验证:
<event_ts>2012-04-18</event_ts>
<event_ts>2012-04-18T12:00:00</event_ts>
<event_ts>2012-04-18T12:00:00Z</event_ts>
<event_ts>2012-04-18T12:00:00-05:00</event_ts>
如果我只对这个元素使用dateTime
类型,我的第一个示例将不会通过验证,因为dateTime
规范规定必须存在时间部分。
XML Schema中是否存在类似 types 的枚举,而不是显式字符串?
我真的宁愿在这里用一个大的正则表达式来重新发明ISO 8601轮。
答案 0 :(得分:3)
我会为你的event_ts使用一个新类型,它被定义为xs:date和xs:dateTime的联合。
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="event_ts">
<xsd:simpleType>
<xsd:union memberTypes="xsd:date xsd:dateTime"/>
</xsd:simpleType>
</xsd:element>
</xsd:schema>
然后您的XML有效......