2008-12-18 7 views
2

J'ai dans mon xsd:XSD conception de l'héritage

<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> 

Donc, pour call_forward_dont_answer, je veux étendre l'option de base et quelques autres éléments/champs, mais l'action ne doit être ajouter et supprimer. Si je fais l'extension, je ne peux pas changer le type d'attribut, mais si je fais une restriction, je ne peux pas ajouter de nouveaux éléments/champs.

Que dois-je faire?

Répondre

2

Eh bien, je l'ai corrigé moi-même. En faisant une restriction puis en étendant cette restriction.

<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>