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