2008-12-18 129 views
2

我有這個在我的xsd:XSD繼承設計

<xsd:simpleType name="line_action"> 
    <xsd:restriction base="xsd:string"> 
     <xsd:enumeration value="add"/> 
     <xsd:enumeration value="delete"/> 
     <xsd:enumeration value="remove"/> 
     <xsd:enumeration value="suspend"/> 
     <xsd:enumeration value="restore"/> 
     <xsd:enumeration value="update"/> 
    </xsd:restriction> 
</xsd:simpleType> 

<xsd:simpleType name="action_enum_5"> 
    <xsd:restriction base="tns:line_action"> 
     <xsd:enumeration value="add"/> 
     <xsd:enumeration value="remove"/> 
    </xsd:restriction> 
</xsd:simpleType> 


    <xsd:element name="call_forward_dont_answer"> 
     <xsd:complexType> 
      <xsd:complexContent> 
       <xsd:restriction base="tns:basic_option"> 
        <xsd:sequence> 
         <xsd:element name="paths" type="tns:path_type"/> 
         <xsd:element name="number_of_rings" type="tns:number_of_rings_type"/> 
         <xsd:element name="ring_to_number" type="tns:telephone_number_type"/> 
        </xsd:sequence> 
        <xsd:attribute name="action" type="tns:action_enum_5"/> 
       </xsd:restriction> 
      </xsd:complexContent> 
     </xsd:complexType> 
    </xsd:element> 

所以對於call_forward_dont_answer,我想擴展基本選項和幾個元素/場,但隨後的操作只宜被添加和刪除。如果我做擴展,那麼我不能改變屬性類型,但如果我做限制,那麼我不能添加新的元素/字段?

我該怎麼辦?

回答

2

那我自己修好了。通過限制,然後延長限制。

<xsd:simpleType name="line_action"> 
    <xsd:restriction base="xsd:string"> 
     <xsd:enumeration value="add"/> 
     <xsd:enumeration value="delete"/> 
     <xsd:enumeration value="remove"/> 
     <xsd:enumeration value="suspend"/> 
     <xsd:enumeration value="restore"/> 
     <xsd:enumeration value="update"/> 
    </xsd:restriction> 
</xsd:simpleType> 
<xsd:complexType name="super_option"> 
    <xsd:attribute name="action" type="tns:line_action"/> 
</xsd:complexType> 

     <xsd:element name="call_forward_dont_answer"> 
      <xsd:complexType> 
       <xsd:complexContent> 
        <xsd:extension base="tns:updatable_option"> 
         <xsd:sequence> 
          <xsd:element name="paths" type="tns:path_type"/> 
          <xsd:element name="number_of_rings" type="tns:number_of_rings_type"/> 
          <xsd:element name="ring_to_number" type="tns:telephone_number_type"/> 
         </xsd:sequence> 
        </xsd:extension> 
       </xsd:complexContent> 
      </xsd:complexType> 
     </xsd:element> 


<xsd:complexType name="basic_option"> 
    <xsd:complexContent> 
     <xsd:restriction base="tns:super_option"> 
      <xsd:attribute name="action" type="tns:action_enum_1"/> 
     </xsd:restriction> 
    </xsd:complexContent> 
</xsd:complexType> 

<xsd:complexType name="updatable_option"> 
    <xsd:complexContent> 
     <xsd:restriction base="tns:super_option"> 
      <xsd:attribute name="action" type="tns:action_enum_5"/> 
     </xsd:restriction> 
    </xsd:complexContent> 
</xsd:complexType>