如何确保 XSD 日期和日期时间字段的验证包括时区

How to ensure XSD Validation of Date and DateTime fields includes timezone

有没有办法强制 xsd:date 或 xsd:date 时间字段在 xml 负载中包含时区?

无论是否附加时区,我尝试过的所有验证器、eclipse、camel 等都接受这些字段。

我想强制执行 XML 中始终存在时区的要求。

编辑:

我希望有一个标准化的方法来处理这种情况。

最后,因为我使用的是 1.0 XSD,所以采用了以下解决方案:

<xs:simpleType name="dateNoTz">
    <xs:restriction base="xs:date">
        <xs:pattern value="\d{4}-[01]\d-[0-3]\d"/>
    </xs:restriction>
</xs:simpleType>
<xs:simpleType name="dateTimeNoTz">
    <xs:restriction base="xs:dateTime">
        <xs:pattern value="\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d(.\d?\d?\d?)"/>
    </xs:restriction>
</xs:simpleType>
<xs:simpleType name="dateTimeTz">
    <xs:restriction base="xs:dateTime">
        <xs:pattern value="\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d(.\d?\d?\d?)?((\+[01]\d:[0-5]\d)|Z)"/>
    </xs:restriction>
</xs:simpleType>
<xs:simpleType name="dateTz">
    <xs:restriction base="xs:date">
        <xs:pattern value="\d{4}-[01]\d-[0-3]\d((\+[01]\d:[0-6]\d)|Z)"/>
    </xs:restriction>
</xs:simpleType>

是的,这可以通过向简单类型添加一个 XSD pattern facet 来完成。如果您添加一个模式方面,在词法上要求该值包含时区信息,则此类型的每个值都需要满足此模式方面,因此必须包含时区信息。

在 XSD 1.0 中,您只能使用模式(正则表达式)来完成。

在 XSD 1.1 中有一个新方面 explicitTimeZone