XML Schema对当前日期的限制

时间:2013-06-20 16:47:18

标签: xml validation xsd restriction

是否可以限制当前日期的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>

如果默认情况下无法执行此操作,是否存在变通方法?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

XSD不支持在设置构面值时调用XPath函数,因此(正如您可能已经知道的那样)问题中的代码将无法正常工作。

最明显的解决方法是

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

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

    明天生成的架构文档将有

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