使用子类型代替XML中的基本类型 - 类似于面向对象的编程语言中的继承



请看我的模式的片段,请:

<xs:complexType name="P">
 <xs:sequence>
  <xs:element name="name" type="xs:string"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="WP">
 <xs:complexContent>
  <xs:extension base="P">
   <xs:sequence>
    <xs:element name="l-l-l" type="xs:integer"/>
   </xs:sequence>
  </xs:extension>
 </xs:complexContent>
</xs:complexType>
<xs:element name="p" type="P"/>

现在,
我希望能够做:

<p>
  <name>someName</name>
  <lll>213</lll>
</p>

但是,我发现lll未被阐明。我知道将<xs:element name="p" type="P"/>更改为<xs:element name="p" type="WP"/>可以帮助我,但是我想使用它,例如Java中的对象或其他面向对象的编程语言。

如何做?

XSD中扩展的类型不能代替原始类型,除非实例明确包含属性xsi:type="type-name"

最新更新