约束与限定
大 Schema 要复用类型:全局定义 + 局部引用。复杂类型还支持 extension 继承扩展(类似类的继承)。
命名类型
complexType name="AddressType" 全局定义,元素 type="AddressType" 引用。一处定义,多处使用。
extension 扩展
在已有类型基础上加子元素(类似继承):complexContent + extension base="基础类型"。
代码示例
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- 全局复杂类型 -->
<xs:complexType name="AddressType">
<xs:sequence>
<xs:element name="city" type="xs:string"/>
<xs:element name="street" type="xs:string"/>
<xs:element name="zip" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<!-- 引用 -->
<xs:element name="company">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="AddressType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- 扩展 -->
<xs:complexType name="PersonType">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="EmployeeType">
<xs:complexContent>
<xs:extension base="PersonType">
<xs:sequence>
<xs:element name="salary" type="xs:decimal"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>