问题:我收到一个复杂的平面文件,无法更改其结构。
看起来像以下示例(尽管原始示例要复杂得多):
VER123456
TA_ExampleContent
REFExampleReference
FRAExampleContent
REFExampleReference
AUFExampleContent
REFExampleReference
LS_ExampleContent
REFExampleReference
每个记录都包含一个标签和数据。同一标签可以在数据结构的不同级别上使用,例如参考它用于TA_,FRA,AUF和LS_。上面的示例给人的印象是所有标签都处于同一级别,但并非相同。结构如下:
VER123456
TA_ExampleContent
REFExampleReference
FRAExampleContent
REFExampleReference
AUFExampleContent
REFExampleReference
LS_ExampleContent
REFExampleReference
当我使用序列或选择组时,数据将在输出.xml文件中处于同一级别。
例如,REF记录配置的最小发生次数为0,最大发生次数为无界。只要存在至少一个REF记录,验证就成功。如果没有REF记录(这是一个有效的选项),则.xsd验证将失败,并显示消息“元素xyz的内容不完整”。
我想要拥有的东西: 关于如何创建可处理上述复杂平面文件的架构的描述。我也在寻找一种处理可选记录的正确方法。
<VER>
<TA_>
<Field01></Field01>
<Field02></Field02>
<FRA>
<Field01></Field01>
<Field02></Field02>
<REF>
<Field01></Field01>
<Field02></Field02>
</REF>
<REF>
<Field01></Field01>
<Field02></Field02>
</REF>
<AUF>
<Field01></Field01>
<Field02></Field02>
<REF> -- could be not available
<Field01></Field01>
<Field02></Field02>
</REF>
<LS_>
<Field01></Field01>
<Field02></Field02>
<REF>
<Field01></Field01>
<Field02></Field02>
</REF>
</LS_>
</AUF>
</FRA>
<REF>
<Field01></Field01>
<Field02></Field02>
</REF>
</TA_>
</VER>
答案 0 :(得分:0)
所以,似乎根本没有那么复杂。
假设TA_,FRA,AUF和LS_结构没有歧义,则您具有基本的结构化平面文件。
运行平面文件向导时的键,可以选择整个循环,TA_,FRA,AUF,LS_及其所有后代作为重复元素。
然后向导将向后旋转,让您进一步定义循环本身。
在这种情况下,向导应至少循环4次,分别对TA_,FRA,AUF和LS_循环一次,然后对每条记录(例如REF)循环一次。
根据需要多次运行向导以使其正确。没问题。