在XML Schema
问题描述:
扩展一个元素,我想在我的XML方案扩展元素,但它不工作:在XML Schema
<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>
答
这应该工作:
<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>
答
您可以将元素 'instituicao' 转换为一个类型。元素和类型位于不同的符号空间中。如果您仍然需要它作为元素,请创建类型为
<element name="instituicao" type="instituicao"/>