1

在我的架构中,我想接受一个包含格式为 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 中是否存在诸如类型枚举而不是显式字符串之类的东西?

我真的宁愿避免在这里用一个大的正则表达式重新发明 ISO 8601 轮子。

4

1 回答 1

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 是有效的......

于 2012-04-18T16:55:29.540 回答