<?xml version="1.0" encoding="UTF-8" ?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <!-- annotation: header comments-->

    <xs:annotation>

       <xs:documentation xml:lang="en">

           XML Schema 2

       </xs:documentation>

    </xs:annotation>

    <!-- transcript element with type of transcriptType-->

    <xs:element name="transcript" type="transcriptType" />

    <!-- transcriptType: complextype -->

    <xs:complexType name="transcriptType">

       <xs:sequence>

           <xs:element name="student" type="studentType"

maxOccurs="1" />

           <xs:element name="unit" type="unitType"

maxOccurs="unbounded" />

       </xs:sequence>

    </xs:complexType>

    <!-- studentType: complextype -->

    <xs:complexType name="studentType">

       <xs:sequence>

           <xs:element name="name" type="xs:string"

maxOccurs="1" />

           <xs:element name="degree" type="xs:string"

minOccurs="1" maxOccurs="5" />

       </xs:sequence>

       <xs:attribute name="id" type="studentID" use="required" />

    </xs:complexType>

    <!-- unitType: complextype -->

    <xs:complexType name="unitType">

       <xs:sequence>

           <xs:element name="unitName" type="xs:string"

minOccurs="1" maxOccurs="1" />

           <xs:element name="grade" type="gradeType"

maxOccurs="1" />

       </xs:sequence>

       <xs:attribute name="code" type="codeType" />

    </xs:complexType>

    <!-- StudentID: simpletype -->

    <xs:simpleType name="studentID">

       <xs:restriction base="xs:long">

           <xs:minInclusive value="100000" />

           <xs:maxInclusive value="999999" />

       </xs:restriction>

    </xs:simpleType>

    <!-- codeType: simpletype -->

    <xs:simpleType name="codeType">

       <xs:restriction base="xs:string">

           <xs:length value="7" />

       </xs:restriction>

    </xs:simpleType>

    <!-- gradeType: simpletype -->

    <xs:simpleType name="gradeType">

       <xs:restriction base="xs:string">

           <xs:enumeration value="High Distinction" />

           <xs:enumeration value="Distinction" />

           <xs:enumeration value="Credit" />

           <xs:enumeration value="Pass" />

           <xs:enumeration value="Fail" />

           <xs:enumeration value="Incomplete" />

       </xs:restriction>

    </xs:simpleType>

</xs:schema>