XML模式更改日期格式

3
在XML模式数据类型中,日期(date)默认的格式为yyyy-mm-dd。如何修改它以接受yyyy/mm/dd格式的样式呢?
3个回答

5

您无法将日期类型更改为特定格式,但您可以将其作为字符串并选择您想要的特定格式。

对于日期格式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>

5
您无法使标准的xs:date类型接受除标准格式以外的格式。您可以定义一个具有模式约束的字符串数据类型;但它将没有日期语义,例如它将接受1999/02/29。
Saxon的XSD处理器具有一种实验性扩展,saxon:preprocess,它允许您更改数据类型的词汇表示。当然,很少有人使用它,因为他们希望其模式是互操作的; 但它正好符合您的需求,所以我想提一下。
另一个经常被忽视的解决方案,也许更实用,是在验证步骤之前对处理流程进行转换。这种方法可用于克服XML Schema的许多限制,但它还不太为人所知。

0

你可以检查一下由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])))

2
请解释你的答案,而不仅仅是把代码倒出来。 - Robert
1
请添加更多信息。不鼓励仅包含代码和“试试这个”答案,因为它们没有可搜索的内容,并且没有解释为什么有人应该“试试这个”。 - abarisone
由于这不是我的答案,我只是将它与melwil的答案链接在一起!http://stackoverflow.com/questions/16684737/what-is-the-regular-expression-for-dd-mm-yyyy-date-format-in-xml-regex 我不能假设我是写这个答案的人。如果你想要,我可以解释一下这个正则表达式是如何工作的,欢迎你。 - slassh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接