1 <?xml version="1.0" encoding="UTF-8"?>
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
3 <xs:element name="university">
4 <xs:complexType>
5 <xs:sequence>
6 <xs:element name="faculty" type="Faculty" minOccurs="0" maxOccurs="unbounded" />
7 <xs:element name="course" type="Courses" minOccurs="0" maxOccurs="unbounded" />
8 <xs:element name="student" type="Students" minOccurs="0" maxOccurs="unbounded" />
9 </xs:sequence>
10 </xs:complexType>
11
12 <xs:key name="facultyKey">
13 <xs:selector xpath="faculty" />
14 <xs:field xpath="FID" />
15 </xs:key>
16
17 <xs:key name="studentKey">
18 <xs:selector xpath="student" />
19 <xs:field xpath="SID" />
20 </xs:key>
21
22 <xs:unique name="PIDkey">
23 <xs:selector xpath="." />
24 <xs:field xpath="faculty/FID | student/SID" />
25 </xs:unique>
26
27 <xs:key name="courseKey">
28 <xs:selector xpath="course" />
29 <xs:field xpath="courseID" />
30 </xs:key>
31
32 <xs:unique name="courseIDkey">
33 <xs:selector xpath="." />
34 <xs:field xpath="course/courseID" />
35 </xs:unique>
36
37 <xs:keyref refer="courseKey" name="prereqRef">
38 <xs:selector xpath="course/prerequisites" />
39 <xs:field xpath="." />
40 </xs:keyref>
41
42 <xs:keyref refer="courseKey" name="teachesKey">
43 <xs:selector xpath="faculty/teaches" />
44 <xs:field xpath="." />
45 </xs:keyref>
46
47 <xs:keyref refer="courseKey" name="enrolledKey">
48 <xs:selector xpath="student/enrolled" />
49 <xs:field xpath="." />
50 </xs:keyref>
51
52 <xs:keyref refer="facultyKey" name="instructorKey">
53 <xs:selector xpath="course/instructor" />
54 <xs:field xpath="." />
55 </xs:keyref>
56
57 <xs:keyref refer="studentKey" name="stdEnrolledKey">
58 <xs:selector xpath="course/studentsEnrolled" />
59 <xs:field xpath="." />
60 </xs:keyref>
61
62 <xs:keyref refer="facultyKey" name="advisorKey">
63 <xs:selector xpath="student/advisor" />
64 <xs:field xpath="." />
65 </xs:keyref>
66
67 </xs:element>
68
69
70 <xs:attribute name="dayOfWeek">
71 <xs:simpleType>
72 <xs:restriction base="xs:string">
73 <xs:enumeration value="Monday" />
74 <xs:enumeration value="Tuesday" />
75 <xs:enumeration value="Wednesday" />
76 <xs:enumeration value="Thursday" />
77 <xs:enumeration value="Firday" />
78 <xs:enumeration value="Saturday" />
79 <xs:enumeration value="Sunday" />
80 </xs:restriction>
81 </xs:simpleType>
82 </xs:attribute>
83
84 <xs:simpleType name="courseIDtype">
85 <xs:restriction base="xs:string">
86 <xs:maxLength value="20" />
87 </xs:restriction>
88 </xs:simpleType>
89
90 <xs:simpleType name="PID">
91 <xs:restriction base="xs:integer">
92 <xs:totalDigits value="9" />
93 </xs:restriction>
94 </xs:simpleType>
95
96 <xs:simpleType name="phoneNumber">
97 <xs:restriction base="xs:string">
98 <xs:pattern value="(\(?[2-9]\d{2}\)?[-\s]?)?[1-9]\d{2}[-\s]?\d{4}" />
99 </xs:restriction>
100 </xs:simpleType>
101
102
103 <xs:complexType name="Faculty">
104 <xs:sequence maxOccurs="unbounded">
105 <xs:element name="FID" type="PID" />
106 <xs:element name="office">
107 <xs:simpleType>
108 <xs:restriction base="xs:string">
109 <xs:maxLength value="30" />
110 </xs:restriction>
111 </xs:simpleType>
112 </xs:element>
113 <xs:element name="phone" type="phoneNumber" />
114 <xs:element name="officeHours" minOccurs="0" maxOccurs="unbounded">
115 <xs:complexType>
116 <xs:sequence>
117 <xs:element name="start" type="xs:time" />
118 <xs:element