2010-02-14 4 views
0

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

**

<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

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

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

В качестве альтернативы, вы можете обернуть повторяющийся адресный и 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>