【问题标题】:XSD: how can I accept data that matches any of a set of types?XSD:如何接受与任何一组类型匹配的数据?
【发布时间】:2012-04-18 16:25:42
【问题描述】:

在我的架构中,我想接受一个包含格式为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 轮子。

【问题讨论】:

    标签: xml xsd


    【解决方案1】:

    我会为你的 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 是有效的......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 2019-12-05
      • 2012-01-12
      相关资源
      最近更新 更多