Наследование XSD - PullRequest
       6

Наследование XSD

2 голосов
/ 18 декабря 2008

У меня есть это в моем 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 я хочу расширить базовую опцию и еще несколько элементов / полей, но тогда нужно только добавить и удалить действие. Если я делаю расширение, то я не могу изменить тип атрибута, но тогда, если я делаю ограничение, я не могу добавить новые элементы / поля?

Что мне делать?

1 Ответ

2 голосов
/ 19 декабря 2008

Ну, я исправил это сам. Делая ограничение, а затем расширяя это ограничение.

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...