Редактирование схемы BizTalk wcf-адаптера вручную - PullRequest
0 голосов
/ 14 февраля 2010

Я новичок в создании схем так, как я делаю это сейчас (вручную), и мне нужна помощь, пожалуйста У меня есть схема, как показано ниже, что я не уверен, что это даже правильно. Мне нужна запись о клиенте, которая может содержать более одной записи адреса. То, что у меня ниже, не кажется правильным или это так? Я имею в виду, в частности, где я применил MAXOCCURS = UNBOUNDED. Как вы думаете, я должен сделать это вместо этого? Заранее спасибо

**

<xs:element name="Customer">
  <xs:complexType>
  <xs:sequence>
  <xs:element name="CustomerCode" type="xs:string" /> 
  <xs:element name="Name" type="xs:string" /> 
  <xs:element name="Active" type="xs:int" /> 
  <xs:element name="SubNumber" type="xs:string" /> 
  <xs:element name="CustomerAccountNumber" type="xs:string" /> 
  <xs:element name="AccountBranchCode" type="xs:string" /> 
  <xs:element name="BranchLocationCode" type="xs:string" /> 
  <xs:element name="Attention" type="xs:string" /> 
  <xs:element maxOccurs="unbounded" name="Addresses">
  <xs:complexType>
  <xs:sequence>
  <xs:element name="Street1" type="xs:string" /> 
  <xs:element name="Street2" type="xs:string" /> 
  <xs:element name="City" type="xs:string" /> 
  <xs:element name="State" type="xs:string" /> 
  <xs:element name="Zip" type="xs:string" /> 
  <xs:element name="Country" type="xs:string" /> 
  <xs:element name="Description" type="xs:string" /> 
  </xs:sequence>
  </xs:complexType>
  </xs:element>
  <xs:element maxOccurs="unbounded" name="PhoneNumbers">
  <xs:complexType>
  <xs:sequence>
  <xs:element name="PhoneNumber" type="xs:string" /> 
  <xs:element name="PhoneType" type="xs:string" /> 
  </xs:sequence>
  </xs:complexType>
  </xs:element>
  </xs:sequence>
  </xs:complexType>
  </xs:element>

**

1 Ответ

1 голос
/ 08 марта 2010

То, что у вас там, выглядит правильно, хотя я бы переименовал элементы «Адреса» и «Телефонные номера» в «Адрес» и «Телефонный номер» соответственно. Это подразумевало бы XML как следующее:

<Customer>
    <CustomerCode>1234</CustomerCode>
    <Name>Customer</Name>
    ...
    <Address>
        ...
    </Address>
    <Address>
        ...
    </Address>
    <PhoneNumber>
        ...
    </PhoneNumber>
    <PhoneNumber>
        ...
    </PhoneNumber>
</Customer>

В качестве альтернативы вы можете захотеть обернуть повторяющиеся элементы Address и PhoneNumber в адреса и номера телефонов - это часто упрощает жизнь, если вы пытаетесь сопоставить с WCF DataContracts:

  <xs:element name="Addresses">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Address" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Street1" type="xs:string" />
              <xs:element name="Street2" type="xs:string" />
              <xs:element name="City" type="xs:string" />
              <xs:element name="State" type="xs:string" />
              <xs:element name="Zip" type="xs:string" />
              <xs:element name="Country" type="xs:string" />
              <xs:element name="Description" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

Это даст вам что-то вроде:

<Customer>
    <CustomerCode>1234</CustomerCode>
    <Name>Customer</Name>
    ...
    <Addresses>
        <Address>
            ...
        </Address>
        <Address>
            ...
        </Address>
    </Addresses>
    <PhoneNumbers>
        <PhoneNumber>
            ...
        </PhoneNumber>
        <PhoneNumber>
            ...
        </PhoneNumber>
    </PhoneNumbers>
</Customer>
...