XML Schema支持继承机制,如在一个xml文档里,既有student元素也有teacher元素,如下:
xml 代码
- <student>
- <name>Chris</name>
- <NO>0312893</NO>
- <major>Software Engineering</major>
- </student>
- <teacher>
- <name>Daneil</name>
- <teach-course>Object-oriented Programming</teach-course>
- </teacher>
但是他们有一个共同的子元素name,我们如何将其抽象出来放到一个共同的父类中呢?这时我们就可以利用XML Schema的继承机制来实现。我们先定义一个类型Person:
xml 代码
- <complexType name="Person" abstract="true">
- <sequence>
- <element name="name" type="string"/>
- </sequence>
- </complexType>
abstract=”true”表示这是一个抽象类型,通过如下定义即可实现继承Person
xml 代码
- <complexType name="Student">
- <extension base="Person">
- <sequence>
- <element name="NO" type="string"/>
- <element name="major" type="string"/>
- </sequence>
- </extension>
- </complexType>
- <complexType name="Teacher">
- <extension base="Teacher">
- <sequence>
- <element name="teach-course" type="string'/>
- </sequence>
- </extension>
- </complexType>
这样Student和Teacher就自动具有了name元素。下面我们只需
xml 代码
- <element name="student" type="Student"/>
- <element name="teacher" type="Teacher"/>
将元素和他们对应的类型绑定即可,类似于面向对象语言中的实例化。注意:由于Person类型是一个抽象类型,是不可以实例化的,这点和面向对象语言也十分相似。