XSD:我如何接受匹配任何类型的数据?

时间:2012-04-18 16:25:42

标签: xml xsd

在我的架构中,我想接受一个包含格式为datedateTime的数据的元素。

例如,任何这些元素都应该验证:

<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轮。

1 个答案:

答案 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有效......