XSD日期格式覆盖

Bhu*_*ale 6 xml xsd

我正在定义一个XSD.我需要定义一个以yyyymmdd格式表示日期的元素.如何在XSD中定义限制以仅接受此格式?

mar*_*c_s 10

您始终可以将其定义为基于字符串的受限简单类型,并受正则表达式的限制:

<xs:simpleType name="FormattedDateType">
   <xs:restriction base="xs:string">
       <xs:pattern value="\d{8}"/>
   </xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)

如果你想变得非常聪明,你可以调整正则表达式,使其更适合日期(例如,包含月份只能是01 - 12的信息,依此类推):

<xs:simpleType name="FormattedDateType">
   <xs:restriction base="xs:string">
       <xs:pattern value="\d{4}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])"/>
   </xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)

  • 你不能扩展一个简单的类型(不是通过xs:扩展),你不能限制某些东西作为基础的一部分无效.'yyyymmdd'格式化日期不是有效的xs:date(它需要'yyyy-mm-dd'格式)所以你需要类似marc_s'的解决方案 (3认同)