是否可以扩展XSD类型?

时间:2012-06-01 13:09:59

标签: xml xsd

如果我的类型定义为

<xs:element name="serviceResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="status"/>
                <xs:element ref="info"/>
                <xs:element ref="code"/>
            </xs:sequence>
        </xs:complexType>

并希望有一个定义为

的其他类型
      <xs:element name="serviceResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="status"/>
                <xs:element ref="info"/>
                <xs:element ref="code"/>
                            <xs:element ref="level"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

是否可以创建扩展第一种类型的新类型,并且只将“level”元素附加到新类型? (有点像Java中的继承)

1 个答案:

答案 0 :(得分:2)

如果只有serviceResponse的类型是命名类型而不是匿名类型,那么这是可能的:

    <xs:complexType name="serviceResponseType">
        <xs:sequence>
            <xs:element ref="status"/>
            <xs:element ref="info"/>
            <xs:element ref="code"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="extendedType">
      <xs:complexContent>
        <xs:extension base="serviceResponseType">
           <xs:sequence>
             <xs:element ref="level"/>
           </xs:sequence>
        </
     </
   </