问题:我收到一个复杂的平面文件,我无法更改结构。 它看起来像下面的例子(尽管原始的例子要复杂得多):
VER123456
TA_ExampleContent
REFExampleReference
FRAExampleContent
REFExampleReference
AUFExampleContent
REFExampleReference
LS_ExampleContent
REFExampleReference
每条记录都包含一个标签和数据。可以在数据结构的不同级别上使用相同的标签,例如, REF。它用于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>
所以,它似乎并不复杂。
如果TA_,FRA,AUF和LS_结构中没有歧义,则您有一个基本的结构化平面文件。
运行平面文件向导时,您可以选择整个循环,TA_,FRA,AUF,LS_以及所有后代作为重复元素。
然后向导将回退并让您进一步定义循环本身。
在这种情况下,向导应至少循环4次,每次为TA_,FRA,AUF和LS_,然后为每个记录,如REF。
根据需要多次运行向导以使其正确。这没什么不对。