0

我正在尝试创建一个包含日期字段的架构。此日期字段的格式为 DD-MM-YYYY。BizTalk 默认接受格式为 YYYY-MM-DD 的日期。

我尝试使用正则表达式,下面是相关字段的 xsd 片段

<xs:element name="FieldName">
    <xs:simpleType>
        <xs:restriction base="xs:date">
            <xs:pattern value="[0-3]{1}[0-9]{1}-[0,1]{1}[0-9]{1}-[0-9]{4}" /> 
        </xs:restriction>
    </xs:simpleType>
</xs:element>

然后,我尝试使用它来验证文件,但由于模式约束失败而出错。

正则表达式有什么问题?

提前致谢

4

2 回答 2

0

我认为问题在于您的字段是 type xs:date。BizTalk 接受格式 YYYY-MM-DD 的事实,这不是 BizTalk 的东西,它来自 XSD 规范本身。见这里:http ://www.w3schools.com/schema/schema_dtypes_date.asp

您会注意到您的正则表达式作为xs:restriction. 这用于进一步限制该节点中包含的数据,但它仍然必须是有效的xs:date. 因此,我认为解决此问题的唯一方法是将字段的类型更改为xs:string并以其他方式处理日期(也许将其转换为地图)。

于 2014-07-04T04:00:06.343 回答
0

我几乎不建议不要使用这个正则表达式,因为它允许无效日期,例如 39-19-9999。

如果你想允许这样无效的日期,这取决于你,但如果不是,我在这里找到了这个正则表达式:

^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$

这也允许一些无效日期,例如 31-06-2014(6 月没有 31. 天),但此正则表达式中允许的无效日期较少。

于 2014-06-20T07:54:01.143 回答