0

是否可以限制当前日期的 XSD 日期和时间数据类型?例如,如果要将日期的 maxInclusive 设置为当前日期:

<xs:element name="DateOfBirths" type="birthsDate"/>    
 <xs:simpleType name="birthsDate">
  <xs:restriction base="xs:date">
   <xs:minInclusive value="1920-01-01"/>
   <xs:maxInclusive value="current-date()" fixed="true"/>
  </xs:restriction>
 </xs:simpleType>

如果默认情况下这是不可能的,是否存在解决方法?任何帮助,将不胜感激。

4

1 回答 1

1

XSD 不支持在设置方面值时调用 XPath 函数,因此(您可能已经知道)问题中的代码将不起作用。

最明显的解决方法是

  • 使用 XSD 1.1 并检查断言中的约束。
  • 使用 Schematron 并检查断言中的约束。
  • 检查应用程序级别的约束。
  • 将birthDate 类型的声明移动到它自己的模式文档中;定期生成该模式文档的新版本,无论是手动还是使用 cron 作业或类似的东西。今天生成的模式文档将具有

    <xs:maxInclusive value="2013-06-20"/>
    

    明天生成的模式文档将有

    <xs:maxInclusive value="2013-06-21"/>
    
于 2013-06-20T20:13:57.387 回答