我正在创建一个架构,需要一个与季度结束相对应的日期(因此 YYYY-03-31、YYYY-06-30、YYYY-09-30 和 YYYY-12-31)。
<xs:element type="xs:date" name="FilingPeriod"/>
是否有一种明智的方法来接受
date
格式的这些值并将它们限制为这些特定但可能无限的值(即永远是任何一年)?我想我可以对 string
字段施加一些限制并以这种方式进行验证,但这似乎是使用正确的 date
格式的黑客行为。
XSD 1.1 带有简单类型断言:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="dates">
<xs:complexType>
<xs:sequence>
<xs:element name="date" type="end-of-quarter-date" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="end-of-quarter-date">
<xs:restriction base="xs:date">
<xs:assertion
test="(day-from-date($value) = 31 and month-from-date($value) = (3, 12))
or
(day-from-date($value) = 30 and month-from-date($value) = (6, 9))"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>