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>
如果需要,您可以将模式调整为其他所需的日期时间格式。
我使用的 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>
如果需要,您可以将模式调整为其他所需的日期时间格式。