xsd:dateTime 具有特定精度

xsd:dateTime with specific precision

我使用的 XSD 有一个元素如下:

<xsd:element name="TdlOrderTimestamp" type="xsd:dateTime" minOccurs="0"/>

但有人告诉我系统实际上要求秒数精确到小数点后三位。这是 allowed by xsd:dateTime,但不是必需的。

我们要求:

<TdlOrderTimestamp>2015-05-12T18:58:02+00:00</TdlOrderTimestamp>

我们应该要求:

<TdlOrderTimestamp>2015-05-12T18:58:02.123+00:00</TdlOrderTimestamp>

在 XSD 中指定此要求的最简单方法是什么?理想情况下,我想尽可能接近 xsd:dateTime 和 ISO8601 的其他习语和特质。

一个简单的解决方案是定义一个新的简单类型,它扩展 xsd:dateTime 并添加一个 模式限制 表明该值必须包含一个点,后跟三个数字。示例:

<xsd:simpleType name="dateTimeWithPrecision">
    <xsd:restriction base="xsd:dateTime">
        <xsd:pattern value=".*\.\d{3}.*"/>
    </xsd:restriction>
</xsd:simpleType>

如果需要,您可以将模式调整为其他所需的日期时间格式。