Biztalk 2010: Zuordnen einer XSD mit vielen Elementen mit demselben Namen

In Bitzalk 2010 sollte ich eine Eingabe in eine XML mit der folgenden Struktur abbilden:

<REQUEST>
  <PROGRAM name="PROGRAM123">
    <INPUT>
      <INSTRUCT name="INSTR1">
         <FIELD name="FIELD11">VALUE1</FIELD>
         <FIELD name="FIELD12">VALUE2</FIELD>
         <FIELD name="FIELD13">VALUE3</FIELD>
       </INSTRUCT>
       <INSTRUCT name="INSTR2">
         <FIELD name="FIELD21">VALUE4</FIELD>
         <FIELD name="FIELD22">VALUE5</FIELD>
         <FIELD name="FIELD23">VALUE6</FIELD>
         <FIELD name="FIELD24">VALUE7</FIELD>
       </INSTRUCT>
       <INSTRUCT name="INSTR2">
         <FIELD name="FIELD21">VALUE8</FIELD>
         <FIELD name="FIELD22">VALUE9</FIELD>
         <FIELD name="FIELD23">VALUE10</FIELD>
         <FIELD name="FIELD24">VALUE11</FIELD>
       </INSTRUCT>
     </INPUT>
   </PROGRAM>
</REQUEST>

Die generierte XSD sah folgendermaßen aus:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="REQUEST" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xs:element name="REQUEST" msdata:IsDataSet="true" msdata:Locale="en-US">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="PROGRAM">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="INPUT" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="INSTRUCT" minOccurs="0" maxOccurs="unbounded">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="FIELD" nillable="true" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                              <xs:simpleContent msdata:ColumnName="FIELD_Text" msdata:Ordinal="1">
                                <xs:extension base="xs:string">
                                  <xs:attribute name="name" type="xs:string" />
                                </xs:extension>
                              </xs:simpleContent>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                        <xs:attribute name="name" type="xs:string" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>    
            </xs:sequence>
            <xs:attribute name="name" type="xs:string" />
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>

Die generierte Struktur war nur "allgemein" und ich musste die Tabellenschleifenfunktion verwenden, um sie in Biztalk abzubilden. Ich habe die Informationen von dieser Lösung erhalten:http: //hestia.typepad.com/flatlander/2007/01/mapping_fixed_e.htm Aber das scheint mir sehr umständlich zu sein (ich habe 40 Felder mit einigen konstanten Werten).

Eine weitere Möglichkeit wäre die Verwendung von XSLT. Aber ich habe keine Erfahrung damit und würde es vorziehen, es direkt in Biztalk (ohne XSLT) abzubilden

Gibt es die Möglichkeit, ein XSD-Schema zu erstellen, so dass ich alle Felder im Karteneditor habe und das Mapping dort erstelle (ohne die Tabellenschleifenfunktion zu verwenden).

Irgendwelche Ideen / Kommentare wären willkommen (auch wenn die Antwort lautet: "benutze XSLT")

Antworten auf die Frage(4)

Ihre Antwort auf die Frage