xs的架构验证:date |日期模式

时间:2014-06-20 07:15:48

标签: regex date biztalk biztalk-2013

我正在尝试创建一个包含日期字段的架构。此日期字段的格式为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>

然后我尝试使用此方法验证文件,但是由于模式约束失败而导致错误。

正则表达式有什么问题?

先谢谢

2 个答案:

答案 0 :(得分: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个月),但此正则表达式中允许的日期更少。

答案 1 :(得分:0)

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

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