扩展XML模式中的元素

时间:2010-08-24 12:34:35

标签: xml xsd

我正在尝试在XML Scheme中扩展一个元素,但它不起作用:

<xs:complexType name="instituicaoComPais">
    <xs:complexContent>
    <xs:extension base="instituicao">
        <xs:sequence>
        <xs:element ref="pais"/>
    </xs:sequence>
    </xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="instituicao">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="departamento"/>
            <xs:element ref="universidade"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

我得到的错误是Warning 3 Undefined complexType 'instituicao' is used as a base for complex type extension.

我该怎么办?

修改

我使用这两个不同的元素:

<xs:element name="autor">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="nome"/>
            <xs:choice>
                <xs:element ref="instituicao"/>
                <xs:element ref="instituicaoComPais"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
</xs:element>

2 个答案:

答案 0 :(得分:1)

这应该有效:

<xs:complexType name="instituicao">
    <xs:sequence>
        <xs:element name="departamento"/>
        <xs:element name="universidade"/>
    </xs:sequence>
</xs:complexType>


<xs:complexType name="instituicaoComPais">
    <xs:complexContent>
        <xs:extension base="instituicao">
            <xs:sequence>
                <xs:element name="pais"/>
            </xs:sequence>
        </xs:extension>
    </xs:complexContent>
</xs:complexType>

答案 1 :(得分:0)

您可以将元素'instituicao'转换为类型。元素和类型位于不同的符号空间中。如果您仍然需要它作为元素从类型

创建元素
<element name="instituicao" type="instituicao"/>