2012-11-29 60 views
0

我有兩種類型的地址,它們都需要存在並且都嵌套在父項中。有沒有一種方法可以強制每種地址類型中的一種,而無需重新定義所有字段兩次?如何在XSD中強制每種類型的孩子之一?

<xs:element name="addresses"> 
    <xs:complexType> 
    <xs:sequence> 
    <xs:element name="address" maxOccurs="2" minOccurs="2"> <!-- MUST BE ONE OF EACH ADDRESS TYPE - Invoice AND Delivery --> 
     <xs:complexType> 
     <xs:sequence> 
      <xs:element type="xs:string" name="addresstype"> 
       <xs:simpleType> 
       <xs:restriction base="xs:string"> 
        <xs:enumeration value="I"/> 
        <xs:enumeration value="D"/> 
       </xs:restriction> 
       </xs:simpleType> 
      </xs:element> 
      <xs:element type="xs:string" name="addresscode"/> 
      <xs:element type="xs:string" name="name"/> 
      <xs:element type="xs:string" name="line1"/> 
      <xs:element type="xs:string" name="line2"/> 
      <xs:element type="xs:string" name="line3"/> 
      <xs:element type="xs:string" name="line4"/> 
      <xs:element type="xs:string" name="line5"/> 
      <xs:element type="xs:string" name="postcode"/> 
     </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
    </xs:sequence> 
</xs:complexType> 
</xs:element> 

回答

0

這個要求是不可能用XSD實現的!我認爲即使通過兩次定義所有字段也不可能!因爲如果你試圖定義父<address>兩次,我猜它最終會顯示錯誤,「一個元素只能有一個(複雜或簡單)類型」!

相關問題