xml架构更改日期格式

时间:2012-11-16 02:35:45

标签: xml date xsd

在xml架构数据类型中 - > date默认情况下允许日期为yyyy-mm-dd格式。

我们如何修改它以便它接受yyyy / mm / dd格式呢?

3 个答案:

答案 0 :(得分:4)

您无法获得标准xs:date类型以接受标准格式以外的格式。你可以做的是定义一个带有模式约束的字符串数据类型;但它没有日期语义,例如它将接受1999/02/29。

Saxon的XSD处理器有一个实验扩展,saxon:preprocess,它允许你改变数据类型的词法表示。当然,没有多少人使用它,因为他们希望他们的模式可以互操作;但它完全符合你的要求所以我想我会提到它。

另一个经常被忽视的解决方案,也许是更实用的解决方案,是您的处理管道在执行验证步骤之前进行转换步骤。这种方法可以用来克服XML Schema的许多局限性,而且还不够广泛。

答案 1 :(得分:4)

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

日期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>

答案 2 :(得分:-1)

你可以查看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])))