使用另一种复杂类型扩展复杂类型

时间:2012-01-20 08:46:53

标签: xml xsd

我想用另一个xsd:complexType扩展xsd:complexType。我想扩展这两组属性,并添加一个可以在新类型内容中允许的元素。问题是我无法弄清楚如何在新的复杂类型中正确指定元素和属性。例如,我尝试了以下代码(结果证明无效):

<xsd:complexType name="NewComplexType">
    <xsd:complexContent>
        <xsd:extension base="OldComplexType">
            <xsd:sequence>
                <xsd:attribute name="newAttribute" type="xsd:string" use="optional" />
            </xsd:sequence>
            <xsd:element name="newElement" type="xsd:string" minOccurs="0" maxOccurs="1" />
        </xsd:extension>
    </xsd:complexContent>
</xsd:complexType>

谢谢, TEO

1 个答案:

答案 0 :(得分:2)

只需将元素与属性交换(元素必须在扩展/序列下)。

<xsd:complexType name="NewComplexType">
    <xsd:complexContent>
        <xsd:extension base="OldComplexType">
            <xsd:sequence>
            <xsd:element name="newElement" type="xsd:string" minOccurs="0" maxOccurs="1"/>
            </xsd:sequence>
            <xsd:attribute name="newAttribute" type="xsd:string" use="optional"/>
        </xsd:extension>
    </xsd:complexContent>