BizTalk的平面文件架构,包含多个重复和可选记录

问题描述 投票:0回答:1

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

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>
biztalk xsd-validation flat-file
1个回答
0
投票

所以,它似乎并不复杂。

如果TA_,FRA,AUF和LS_结构中没有歧义,则您有一个基本的结构化平面文件。

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

然后向导将回退并让您进一步定义循环本身。

在这种情况下,向导应至少循环4次,每次为TA_,FRA,AUF和LS_,然后为每个记录,如REF。

根据需要多次运行向导以使其正确。这没什么不对。

© www.soinside.com 2019 - 2024. All rights reserved.