使用正则表达式进行平面文件架构验证 - 不允许使用新行和分隔符char

时间:2017-05-10 15:08:43

标签: regex xsd biztalk xsd-validation biztalk-schemas

我知道这一定是原始问题,但我仍然无法找到解决我的简单问题的方法。

在BizTalk解决方案中,我想针对平面文件架构验证入站平面文件(Delimiter char是pipe' |')。规则是每条记录(每一行)必须有完全相同数量的字段。所以在拆卸后,没有一个字段必须有新的行字符(CR LF或\ r \ n)和管道' |'炭。

平面文件中的每一行都是一条记录,每条记录中有10个字段。所以我必须准确地说出9' |'每一行都有管道。

我尝试使用XSD正则表达式验证来解决它,但由于正则表达式不是我的专业领域,我无法创建最终的正则表达式。目前我正在测试。*(?!([^ \ r \ n \ |]))。*但当超过9' |'时它不起作用。然而,当小于9时它会起作用。

最后我想要一个XSD正则表达式,它不能允许新的行字符和' |'在字符串中但可以有空的''值。

我在下面提到了创建我的正则表达式的链接,

XML Schema Regular Expressions

XML Schema - Regular Expressions

2 个答案:

答案 0 :(得分:1)

我认为你正试图解决错误的问题。

首先,你真的需要这样做吗?我不记得曾经需要甚至考虑过你所描述的内容。

其次,您可以只验证已解析的Xml。如果字段计数错误,那么它将失败。如果你真的需要检查额外的' |',你可以将它放在Schema中以在Map中测试它。

答案 1 :(得分:-1)

IBM Integration Bus允许您使用XSD描述非XML数据格式,从而解决了这个问题。该技术称为数据格式描述语言(DFDL)。 https://en.wikipedia.org/wiki/Data_Format_Description_Language