2015-04-01 4 views
1

У меня есть позиционный плоский файл, который содержит записи с повторяющейся последовательностью, как это;Как определить схему плоского файла для записи с повторяющейся последовательностью?

TOKEN NAME LABEL VALUE LABEL VALUE LABEL VALUE LABEL VALUE .. 

маркер идентифицирует тип записи, название является значение имени, и метка (10 позиций) и значение (50 позиций) пар может повторить не-фиксированное число раз (1 .. *).

Я определил схему плоского файла, как показано ниже; Он содержит (1 .. *), с LABEL и VALUE с правильными позиционными данными:

repeating sequence schema

Оба LABEL и VALUE имеет а MinOccurs и через MaxOccurs из 1.

Проблема заключается в том, что BizTalk не имеет шов, чтобы справиться с этой ситуацией. Когда я генерировать (родной) экземпляр для этой схемы я получаю следующий вывод:

TOKEN NAME  LABEL  VALUE            

(Он генерирует только один экземпляр LABEL VALUE).

Когда я пытаюсь прочитать файл, который имеет несколько вхождений LABEL пар значений (5), он дает мне следующую XML:

<FILE xmlns="http://schemas.demo/2015/01"> 
    <RepeatingRecord xmlns=""> 
     <NAME>NAME</NAME> 
     <LABEL>LABEL</LABEL> 
     <LABEL>VALUE</LABEL> 
     <LABEL>LABEL</LABEL> 
     <LABEL>VALUE</LABEL> 
     <LABEL>LABEL</LABEL> 
     <LABEL>VALUE</LABEL> 
     <LABEL>LABEL</LABEL> 
     <LABEL>VALUE</LABEL> 
     <LABEL>LABEL</LABEL> 
     <LABEL>VALUE</LABEL> 
    </RepeatingRecord> 
</FILE> 

Так что я только получить LABEL метки без значения тегов. Содержимое частей VALUE ошибочно помещается в тег LABEL.

Я хотел бы ожидать следующий XML:

<FILE xmlns="http://schemas.demo/2015/01"> 
    <RepeatingRecord xmlns=""> 
     <NAME>NAME</NAME> 
     <LABEL>LABEL</LABEL> 
     <VALUE>VALUE</VALUE> 
     <LABEL>LABEL</LABEL> 
     <VALUE>VALUE</VALUE> 
     <LABEL>LABEL</LABEL> 
     <VALUE>VALUE</VALUE> 
     <LABEL>LABEL</LABEL> 
     <VALUE>VALUE</VALUE> 
     <LABEL>LABEL</LABEL> 
     <VALUE>VALUE</VALUE> 
    </RepeatingRecord> 
</FILE> 

Как я могу определить плоскую схему файла с повторяющейся последовательностью в записи?

Я в настоящее время имеют следующую схему:

<?xml version="1.0" encoding="utf-16"?> 
<xs:schema xmlns="http://schemas.goudse.nl/irma/adapter/2015/01" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://schemas.goudse.nl/irma/adapter/2015/01" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:annotation> 
    <xs:appinfo> 
     <b:schemaInfo standard="Flat File" root_reference="FILE" default_pad_char="0x20" pad_char_type="hex" count_positions_by_byte="false" parser_optimization="speed" lookahead_depth="3" suppress_empty_nodes="true" generate_empty_nodes="false" allow_early_termination="true" early_terminate_optional_fields="false" allow_message_breakup_of_infix_root="false" compile_parse_tables="false" document_type="ASFBatchFlatFileSchema" version="2015.01" schema_type="document" default_child_order="postfix" child_delimiter_type="hex" default_child_delimiter="0x0D 0x0A" /> 
     <schemaEditorExtension:schemaInfo namespaceAlias="b" extensionClass="Microsoft.BizTalk.FlatFileExtension.FlatFileExtension" standardName="Flat File" xmlns:schemaEditorExtension="http://schemas.microsoft.com/BizTalk/2003/SchemaEditorExtensions" /> 
    </xs:appinfo> 
    </xs:annotation> 
    <xs:element name="FILE"> 
    <xs:annotation> 
     <xs:appinfo> 
     <b:recordInfo structure="delimited" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" sequence_number="1" child_order="default" notes="Een compleet bestand" /> 
     </xs:appinfo> 
    </xs:annotation> 
    <xs:complexType> 
     <xs:sequence minOccurs="1" maxOccurs="1"> 
     <xs:annotation> 
      <xs:appinfo> 
      <b:groupInfo sequence_number="0" /> 
      </xs:appinfo> 
     </xs:annotation> 
     <xs:element minOccurs="1" maxOccurs="unbounded" name="RepeatingRecord"> 
      <xs:annotation> 
      <xs:appinfo> 
       <b:recordInfo structure="positional" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" tag_name="TOKEN " notes="Data behorende bij de schadebrief" sequence_number="1" /> 
      </xs:appinfo> 
      </xs:annotation> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:annotation> 
       <xs:appinfo> 
        <b:groupInfo sequence_number="0" /> 
       </xs:appinfo> 
       </xs:annotation> 
       <xs:element name="NAME" type="xs:string"> 
       <xs:annotation> 
        <xs:appinfo> 
        <b:fieldInfo justification="left" sequence_number="1" pos_length="12" pos_offset="6" pad_char_type="hex" pad_char="0x20" /> 
        </xs:appinfo> 
       </xs:annotation> 
       </xs:element> 
       <xs:sequence minOccurs="1" maxOccurs="unbounded"> 
       <xs:annotation> 
        <xs:appinfo> 
        <b:groupInfo sequence_number="2" /> 
        </xs:appinfo> 
       </xs:annotation> 
       <xs:element minOccurs="1" maxOccurs="1" name="LABEL" type="xs:string"> 
        <xs:annotation> 
        <xs:appinfo> 
         <b:fieldInfo justification="left" pos_length="10" pad_char_type="hex" pad_char="0x20" sequence_number="1" /> 
        </xs:appinfo> 
        </xs:annotation> 
       </xs:element> 
       <xs:element minOccurs="1" maxOccurs="1" name="VALUE" type="xs:string"> 
        <xs:annotation> 
        <xs:appinfo> 
         <b:fieldInfo justification="left" pos_length="50" pad_char_type="hex" pad_char="0x20" sequence_number="2" /> 
        </xs:appinfo> 
        </xs:annotation> 
       </xs:element> 
       </xs:sequence> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

и следующий файл тестовых данных (заменить пробелы с периодами для ясности, схема определяет пробелы для заполнения).

TOKEN.NAME........LABEL.....VALUE.............................................LABEL.....VALUE.............................................LABEL.....VALUE.............................................LABEL.....VALUE.............................................LABEL.....VALUE............................................. 

UPDATE

То, что я не упомянул в этом вопросе (для простоты), что эта запись используется в плоском файл с несколькими видами различных записей, поэтому расщепление этой записи в детские записи не являются жизнеспособным решением.

+1

Вы уже пытались что-то в схеме? Можете ли вы опубликовать его? Благодарю. – potame

+0

Не могли бы вы разместить соответствующий образец вашего плоского файла? Трудно узнать, что вам нужно, без информации обо всех структурах/записях в вашем файле. –

ответ

2

Я был в состоянии подтвердить ввод из верхней части вашего поста со следующими, мы надеемся, это поможет вам ОНТ он правильный путь:

<?xml version="1.0" encoding="utf-16"?> 
<xs:schema xmlns="http://BizTalk_Server_Project2.FlatFileSchema2" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" targetNamespace="http://BizTalk_Server_Project2.FlatFileSchema2" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:annotation> 
    <xs:appinfo> 
     <schemaEditorExtension:schemaInfo namespaceAlias="b" extensionClass="Microsoft.BizTalk.FlatFileExtension.FlatFileExtension" standardName="Flat File" xmlns:schemaEditorExtension="http://schemas.microsoft.com/BizTalk/2003/SchemaEditorExtensions" /> 
     <b:schemaInfo standard="Flat File" codepage="65001" default_pad_char=" " pad_char_type="char" count_positions_by_byte="false" parser_optimization="speed" lookahead_depth="3" suppress_empty_nodes="false" generate_empty_nodes="true" allow_early_termination="false" early_terminate_optional_fields="false" allow_message_breakup_of_infix_root="false" compile_parse_tables="false" root_reference="FILE" /> 
    </xs:appinfo> 
    </xs:annotation> 
    <xs:element name="FILE"> 
    <xs:annotation> 
     <xs:appinfo> 
     <b:recordInfo structure="positional" sequence_number="1" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" /> 
     </xs:appinfo> 
    </xs:annotation> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:annotation> 
      <xs:appinfo> 
      <groupInfo sequence_number="0" xmlns="http://schemas.microsoft.com/BizTalk/2003" /> 
      </xs:appinfo> 
     </xs:annotation> 
     <xs:element name="FILE_Child1" type="xs:string"> 
      <xs:annotation> 
      <xs:appinfo> 
       <b:fieldInfo justification="left" pos_offset="0" pos_length="6" sequence_number="1" /> 
      </xs:appinfo> 
      </xs:annotation> 
     </xs:element> 
     <xs:element name="FILE_Child2" type="xs:string"> 
      <xs:annotation> 
      <xs:appinfo> 
       <b:fieldInfo justification="left" pos_offset="0" pos_length="5" sequence_number="2" /> 
      </xs:appinfo> 
      </xs:annotation> 
     </xs:element> 
     <xs:element maxOccurs="unbounded" name="FILE_Child3"> 
      <xs:annotation> 
      <xs:appinfo> 
       <b:recordInfo structure="positional" sequence_number="3" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" /> 
      </xs:appinfo> 
      </xs:annotation> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:annotation> 
       <xs:appinfo> 
        <groupInfo sequence_number="0" xmlns="http://schemas.microsoft.com/BizTalk/2003" /> 
       </xs:appinfo> 
       </xs:annotation> 
       <xs:element name="FILE_Child3_Child1" type="xs:string"> 
       <xs:annotation> 
        <xs:appinfo> 
        <b:fieldInfo justification="left" pos_offset="0" pos_length="6" sequence_number="1" /> 
        </xs:appinfo> 
       </xs:annotation> 
       </xs:element> 
       <xs:element name="FILE_Child3_Child2" type="xs:string"> 
       <xs:annotation> 
        <xs:appinfo> 
        <b:fieldInfo justification="left" pos_offset="0" pos_length="6" sequence_number="2" /> 
        </xs:appinfo> 
       </xs:annotation> 
       </xs:element> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 
+1

Не могли бы вы объяснить это решение? –

+0

Он создает повторяющуюся запись для LABEL и VALUE в записи TOKEN.Вы сказали, что это не сработает из-за других особенностей вашего документа, но я не знаю, что я могу сделать с этим, не видя больше документа. –