限制在任何年份的特定日期

问题描述 投票:0回答:1

我正在创建一个架构,需要一个与季度结束相对应的日期(因此 YYYY-03-31、YYYY-06-30、YYYY-09-30 和 YYYY-12-31)。

<xs:element type="xs:date" name="FilingPeriod"/>

是否有一种明智的方法来接受

date
格式的这些值并将它们限制为这些特定但可能无限的值(即永远是任何一年)?我想我可以对
string
字段施加一些限制并以这种方式进行验证,但这似乎是使用正确的
date
格式的黑客行为。

xml date validation xsd xsd-validation
1个回答
0
投票

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>

XML 工作台中的在线 XSD 小提琴

© www.soinside.com 2019 - 2024. All rights reserved.