带有多个重复记录和可选记录的BizTalk平面文件架构

时间:2019-04-23 13:54:38

标签: biztalk xsd-validation flat-file

问题:我收到一个复杂的平面文件,无法更改其结构。
看起来像以下示例(尽管原始示例要复杂得多):

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>

1 个答案:

答案 0 :(得分:0)

所以,似乎根本没有那么复杂。

假设TA_,FRA,AUF和LS_结构没有歧义,则您具有基本的结构化平面文件。

运行平面文件向导时的键,可以选择整个循环,TA_,FRA,AUF,LS_及其所有后代作为重复元素。

然后向导将向后旋转,让您进一步定义循环本身。

在这种情况下,向导应至少循环4次,分别对TA_,FRA,AUF和LS_循环一次,然后对每条记录(例如REF)循环一次。

根据需要多次运行向导以使其正确。没问题。

相关问题