2011-11-15 170 views
0

早上好时,分钟对组分钟

问题:

我试图创建一个输入文件的模式。我无法获得正确的属性组合来获取我的测试文件进行验证。

输入文件:

该文件包括一个需要的头,记录一个可选的重复基团,和一个所需的拖车。该文件是包含每个人员信息的员工列表。 组内的重复记录应按顺序呈现。组中的一些记录是可选的,有些不是。重复组中至多应有一种记录类型。

像这样:

header (required) 

E1 (required if group is present) 
E2 (required if group is present) 
E3 (required if group is present) 
P1 (optional) 
P2 (optional) 
P3 (optional) 
S1 (optional) 

E1 <--- error is here 
E2 
E3 

Trailer (required) 

的组,E1至P3,应该是为了和可重复。

我已经试过:

我创建了一个<序列>并在其中放置E1通过P3。 我设置min发生= 0,max发生=序列上无界。

我在所需记录E1,E2,E3上设置min发生= 1,max发生= 1。 我在可选记录P1,P2,P3上设置min发生= 0,max发生= 1。

问题:

的组的第二次出现总是引起一个实例验证失败(Visual Studio 2010中)。错误消息没有帮助:“意外的数据发现”

我不清楚每个记录上“min发生”和“group min发生”之间的区别。 序列或全局中的“min发生”是本地的吗? 如果我在E1记录上设置了max occurrence = 1,我会得到一个文件还是每个文件一个? 关于MSDN的解释清楚如泥。

我尝试将值放在“group *”属性中,但仍然没有快乐。

我哪里错了?

谢谢。

编辑:

的架构的一个图:

enter image description here

DPIC是标题,Z1拖车。添加S1记录似乎会导致失败。 我已经看过P3和S1的定义,它们看起来是正确的。这是从MSVC 2010向导生成的平面文件 模式。

+0

我试着重新排列输入以获得一些线索。第二组记录不是问题。它只有在输入没有可选的P1或P2记录时才会失败。它在接下来的第一个P3记录上失败。所以我猜想顺序是问题。你如何指定具有可选记录的序列? – Jay

+0

你可以发布XML而不是描述它吗? –

+0

这是巨大的,我的雇主可能不喜欢它发布。我会看看我是否可以做一个表示... – Jay

回答

0

模式不验证输入文件,但仍生成有效的输出文件。我会考虑关闭它。感谢您的帮助