采用XSD建立教师、学生之间的关系。
假设有两个实体“学生”和“教师”,一个学生可以有多个老师,一个老师也可以有多个学生,二者为多对多的关系。在XSD中描述多对多的关系可以使用XML元素的引用和复杂类型的组合,使用中间表(或连接表)来表示多对多关系。
首先,我们定义“学生”和“教师”两个元素:
<xs:element name="student" type="studentType"/>
<xs:element name="teacher" type="teacherType"/>
然后,我们定义“中间表”元素,其中包含“学生ID”和“课程ID”属性:
<xs:element name="student_teacher">
<xs:complexType name="studentTeacherType">
<xs:sequence>
<xs:element ref="student"/>
<xs:element ref="teacher"/>
</xs:sequence>
</xs:complexType>
</xs:element>
接下来,我们使用XML元素的引用来建立“学生”和“课程”与“中间表”之间的关系:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd"
elementFormDefault="qualified"
xmlns="http://tempuri.org/XMLSchema.xsd"
xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<xs:element name="student" type="studentType"/>
<xs:element name="teacher" type="teacherType"/>
<xs:element name="student_teacher" type="studentTeacherType"/>
<xs:complexType name="studentType">
<xs:sequence>
<xs:element name="id" type="xs:integer"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="teachers" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:attribute ref="xs:id"/>
<xs:attribute ref="xs:name"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="teacherType">
<xs:sequence>
<xs:element name="id" type="xs:integer"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="students" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:attribute ref="xs:id"/>
<xs:attribute ref="xs:name"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="studentTeacherType">
<xs:sequence>
<xs:element ref="student"/>
<xs:element ref="teacher"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
三者间的关系可视化如下:
标签:XML,Web,关系,元素,学生,XSD From: https://www.cnblogs.com/tangjielin/p/17300809.html