Inheritance XSD继承设计

Inheritance XSD继承设计,inheritance,xsd,Inheritance,Xsd,我的xsd中有这个: <xsd:simpleType name="line_action"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="add"/> <xsd:enumeration value="delete"/> <xsd:enumeration value="remove"/> &l

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

<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,我想扩展基本选项和更多的元素/字段,但接下来的操作应该是add和Remove。如果进行扩展,则无法更改属性类型,但如果进行限制,则无法添加新元素/字段

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

我该怎么办?

嗯,我自己修好了。通过制定限制,然后扩展该限制

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