在 xml 模式数据类型中 --> 日期默认允许日期为 yyyy-mm-dd 格式。
我们如何修改它以使其接受 yyyy/mm/dd 格式样式?
您无法将日期类型更改为特定格式,但可以将其作为字符串并选择所需的特定格式。
对于日期 MM/DD/YYYY 的格式。代码片段如下。
<xs:element name="StartDate">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="\d{2}[/]\d{2}[/]\d{4}"></xs:pattern>
<xs:length value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
您不能让标准 xs:date 类型接受标准格式以外的格式。你可以做的是定义一个带有模式约束的字符串数据类型;但它没有日期语义,例如它将接受 1999/02/29。
Saxon 的 XSD 处理器有一个实验性扩展 saxon:preprocess,它允许您更改数据类型的词法表示。当然,没有多少人使用它,因为他们希望他们的模式是可互操作的。但它正是你想要的,所以我想我会提到它。
另一种经常被忽视但可能更实用的解决方案是让您的处理管道在执行验证步骤之前执行转换步骤。这种方法可以用来克服 XML Schema 的许多限制,而且它还不够广为人知。
您可以查看 melwil 发布的这个正则表达式。它对我有用!
((0[1-9]|[1-2]\d|3[01])-(0[13578]|1[02])|([0-2]\d|30)-(0[469]|11)|(0[1-9]|1\d|2[0-8])-02)-\d{4}|(0[1-9]|[12]\d)-02-(([02468][048]|[13579][26])00|(\d{2}([02468][48]|[2468][048]|[13579][26])))