XSD 中的日期格式合并
Date formats union in XSD
我在 XSD 中定义了以下简单类型:
<xs:simpleType name="myDateFormat">
<xs:union memberTypes="xs:dateTime xs:date xs:gYearMonth xs:gYear"/>
</xs:simpleType>
我想允许 YYYY、YYYY-MM、YYYY-MM-DD 和完整的日期时间格式。但在做了一些测试后,我意识到我没有收到以下值的错误:
- 2006999
- 20061302
- 2006999999
如何创建只允许 YYYY、YYYY-MM、YYYY-MM-DD 和完整日期时间的类型?
EDIT1:这是一个可能的解决方案吗?
<xs:simpleType name="myDateFormat">
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:gYear">
<xs:pattern value="\d{4}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:gYearMonth">
<xs:pattern value="\d{4}-\d{2}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:date">
<xs:pattern value="\d{4}-\d{2}-\d{2}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:dateTime">
<xs:pattern value="\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
是 xs:gYear
允许不需要的值。 (它允许它们作为超过 4 位数字的年份。)
您可以定义您自己的年份,年份限制为 4 位数字:
<xs:simpleType name="gYear4">
<xs:restriction base="xs:nonNegativeInteger">
<xs:totalDigits value="4"/>
</xs:restriction>
</xs:simpleType>
然后在您的 xs:union
:
中使用它
<xs:simpleType name="myDateFormat">
<xs:union memberTypes="xs:dateTime xs:date xs:gYearMonth gYear4"/>
</xs:simpleType>
然后你想要的值将被允许,你不想要的 YYYY[YYYYYY]
值将被禁止。
我在 XSD 中定义了以下简单类型:
<xs:simpleType name="myDateFormat">
<xs:union memberTypes="xs:dateTime xs:date xs:gYearMonth xs:gYear"/>
</xs:simpleType>
我想允许 YYYY、YYYY-MM、YYYY-MM-DD 和完整的日期时间格式。但在做了一些测试后,我意识到我没有收到以下值的错误:
- 2006999
- 20061302
- 2006999999
如何创建只允许 YYYY、YYYY-MM、YYYY-MM-DD 和完整日期时间的类型?
EDIT1:这是一个可能的解决方案吗?
<xs:simpleType name="myDateFormat">
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:gYear">
<xs:pattern value="\d{4}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:gYearMonth">
<xs:pattern value="\d{4}-\d{2}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:date">
<xs:pattern value="\d{4}-\d{2}-\d{2}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:dateTime">
<xs:pattern value="\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
是 xs:gYear
允许不需要的值。 (它允许它们作为超过 4 位数字的年份。)
您可以定义您自己的年份,年份限制为 4 位数字:
<xs:simpleType name="gYear4">
<xs:restriction base="xs:nonNegativeInteger">
<xs:totalDigits value="4"/>
</xs:restriction>
</xs:simpleType>
然后在您的 xs:union
:
<xs:simpleType name="myDateFormat">
<xs:union memberTypes="xs:dateTime xs:date xs:gYearMonth gYear4"/>
</xs:simpleType>
然后你想要的值将被允许,你不想要的 YYYY[YYYYYY]
值将被禁止。