XML(4)——schema文件相互引用

两个xsd必须在同一命名空间下targetNamespace。

student.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
targetNamespace="http://www.example.org/classroom" 
xmlns:tns="http://www.example.org/classroom" 
elementFormDefault="qualified">
<xsd:element name="student" type="tns:studentType"/>

<xsd:complexType name="studentType">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="sex" type="tns:sexType"/>
</xsd:sequence>
</xsd:complexType>

<xsd:simpleType name="sexType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="男"/>
<xsd:enumeration value="女"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>

classroom.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
targetNamespace="http://www.example.org/classroom" 
xmlns:tns="http://www.example.org/classroom" 
elementFormDefault="qualified">

<!-- 两个文件必须在同一个命名空间下(targetNamespace) -->
<xsd:include schemaLocation="student.xsd"/>

<xsd:element name="classroom" type="tns:classroomType"/>

<xsd:complexType name="classroomType">
<xsd:sequence>
<xsd:element name="grade" type="tns:gradeType"/>
<xsd:element name="name" type="xsd:string"/>
<xsd:sequence minOccurs="1" maxOccurs="unbounded">
<xsd:element name="student" type="tns:studentType"/>
</xsd:sequence>
</xsd:sequence>
</xsd:complexType>

<xsd:simpleType name="gradeType">
<xsd:restriction base="xsd:int">
<xsd:minInclusive value="2000"/>
<xsd:maxInclusive value="3000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
上一篇:一起谈.NET技术,.NET 中的正则表达式


下一篇:《计算机系统:核心概念及软硬件实现(原书第4版)》——1.4数据库系统