Skip to content
Snippets Groups Projects
courses.xsd 10.78 KiB
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:x="http://www.w3.org/1999/xhtml"
    xmlns="http://courseapproval.unl.edu/courses"
    targetNamespace="http://courseapproval.unl.edu/courses"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified">

    <xs:import namespace="http://www.w3.org/XML/1998/namespace" 
               schemaLocation="http://www.w3.org/2001/xml.xsd" />
    <xs:import namespace="http://www.w3.org/1999/xhtml"
               schemaLocation="http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd" />


    <xs:element name="courses" type="courses">
        <xs:annotation>
            <xs:documentation>This is the root node for a list of course descriptions.</xs:documentation>
        </xs:annotation></xs:element>

    <xs:complexType name="courses">
        <xs:sequence>
            <xs:element name="course" type="course" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>
    
    <xs:complexType name="course">
        <xs:annotation>
            <xs:documentation>This is a description of a single course, containing data that one would find in the undergraduate bulletin.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="title" type="xs:string" >
                <xs:annotation>
                    <xs:documentation>The title of the course</xs:documentation>
                </xs:annotation></xs:element>
            <xs:element name="courseCodes" type="courseCodes" >
                <xs:annotation>
                    <xs:documentation>A list of course codes for the course, broken up into the subject code, course number and possibly a course letter.  Each course must have at least one course code of type "home listing."</xs:documentation>
                </xs:annotation></xs:element>
            <xs:element name="gradingType" type="gradingType" >
                <xs:annotation>
                    <xs:documentation>This specifies if the course is allowed to be taken pass/no pass, for a letter grade, or both. </xs:documentation>
                </xs:annotation></xs:element>
            <xs:element name="dfRemoval" type="xs:boolean" >
                <xs:annotation>
                    <xs:documentation>If set to true, this course will remove a grade of D or F from previous versions of the course.</xs:documentation>
                </xs:annotation></xs:element>
            <xs:element name="effectiveSemester" type="xs:positiveInteger" >
                <xs:annotation>
                    <xs:documentation>The semester that this version of the course became active.  Format is a four digit year followed by a single digit for the term (1 = Fall, 2 = Spring, 3 = Summer).</xs:documentation>
                </xs:annotation></xs:element>
            <xs:element name="prerequisite" type="x:Block" minOccurs="0" >
                <xs:annotation>
                    <xs:documentation>An HTML block describing the prerequisites for this course.</xs:documentation>
                </xs:annotation></xs:element>
            <xs:element name="notes" type="x:Block" minOccurs="0" >
                <xs:annotation>
                    <xs:documentation>An HTML block containing notes a student should know before registering for the course.</xs:documentation>
                </xs:annotation></xs:element>
            <xs:element name="description" type="x:Block" minOccurs="0" >
                <xs:annotation>
                    <xs:documentation>An HTML block describing the course.</xs:documentation>
                </xs:annotation></xs:element>
            <xs:element name="campuses" type="campuses" >
                <xs:annotation>
                    <xs:documentation>A list of campuses at which this course is offered.</xs:documentation>
                </xs:annotation></xs:element>
            <xs:element name="deliveryMethods" type="deliveryMethods" >
                <xs:annotation>
                    <xs:documentation>A list of ways in which this course is delivered.  (ie: Classroom, Web and/or Correspondence)</xs:documentation>
                </xs:annotation></xs:element>
            <xs:element name="termsOffered" type="termsOffered" minOccurs="0" >
                <xs:annotation>
                    <xs:documentation>A list of terms during which this course may be offered (ie: Fall, Spring, or Summer)</xs:documentation>
                </xs:annotation></xs:element>
            <xs:element name="activities" type="activities" >
                <xs:annotation>
                    <xs:documentation>A list of activities the student will participate in while taking this course, usually with an assosiated number of hours per week.</xs:documentation>
                </xs:annotation></xs:element>
            <xs:element name="credits" type="credits" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>A list of the credit hours a course is offered for.  Usally just a single "Single Value" type.  Other possibilites are a range of values (with a min and max value) or a maximum per semester or per career.</xs:documentation>
                </xs:annotation></xs:element>
            <xs:element name="aceOutcomes" type="aceOutcomes" minOccurs="0" >
                <xs:annotation>
                    <xs:documentation>A list of ACE Outcomes.  Each child element is a Stratigic Learning Objective (SLO) number.  See http://ace.unl.edu/ for more information.</xs:documentation></xs:annotation></xs:element>
            <xs:element name="gradCredits" type="xs:string" minOccurs="0" >
                <xs:annotation>
                    <xs:documentation>If the number of credits offered by the grad version of the course is different, they will be listen as text here.</xs:documentation>
                </xs:annotation></xs:element>
            <xs:element name="gradNotes" type="x:Block" minOccurs="0" >
                <xs:annotation>
                    <xs:documentation>Notes for the grad version of the course, if different.</xs:documentation>
                </xs:annotation></xs:element>
            <xs:element name="gradPrerequisite" type="x:Block" minOccurs="0" >
                <xs:annotation>
                    <xs:documentation>Prerequisites for the grad version of the course, if different.</xs:documentation>
                </xs:annotation></xs:element>
        </xs:sequence>
    </xs:complexType>
    
    
    <xs:complexType name="courseCodes">
        <xs:sequence>
            <xs:element name="courseCode" type="courseCode" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>
    
    <xs:complexType name="courseCode">
        <xs:sequence>
            <xs:element name="subject" type="xs:string" />
            <xs:element name="courseNumber" type="xs:positiveInteger" />
            <xs:element name="courseLetter" type="xs:string" minOccurs="0" />
        </xs:sequence>
        <xs:attribute name="type" type="courseCodeType" />
    </xs:complexType>

    <xs:simpleType name="courseCodeType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="home listing" />
            <xs:enumeration value="crosslisting" />
            <xs:enumeration value="grad tie-in" />
        </xs:restriction>
    </xs:simpleType>

    
    <xs:simpleType name="gradingType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="unrestricted" />
            <xs:enumeration value="letter grade only" />
            <xs:enumeration value="pass/no pass only" />
        </xs:restriction>
    </xs:simpleType>


    <xs:complexType name="campuses">
        <xs:sequence>
            <xs:element name="campus" type="campus" maxOccurs="4" />
        </xs:sequence>
    </xs:complexType>
    
    <xs:simpleType name="campus">
        <xs:restriction base="xs:string">
            <xs:enumeration value="UNL" />
            <xs:enumeration value="UNO" />
            <xs:enumeration value="UNMC" />
            <xs:enumeration value="UNK" />
        </xs:restriction>
    </xs:simpleType>


    <xs:complexType name="deliveryMethods">
        <xs:sequence>
            <xs:element name="deliveryMethod" type="deliveryMethod" maxOccurs="3" />
        </xs:sequence>
    </xs:complexType>
    
    <xs:simpleType name="deliveryMethod">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Classroom" />
            <xs:enumeration value="Web" />
            <xs:enumeration value="Correspondence" />
        </xs:restriction>
    </xs:simpleType>


    <xs:complexType name="termsOffered">
        <xs:sequence>
            <xs:element name="term" type="term" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>
    
    <xs:simpleType name="term">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Fall" />
            <xs:enumeration value="Spring" />
            <xs:enumeration value="Summer" />
        </xs:restriction>
    </xs:simpleType>
    
    
    <xs:complexType name="activities">
        <xs:sequence>
            <xs:element name="activity" type="activity" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
    
    <xs:complexType name="activity">
        <xs:sequence>
            <xs:element name="type" type="activityType" />
            <xs:element name="hours" type="xs:decimal" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    
    <xs:simpleType name="activityType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="lec" />
            <xs:enumeration value="lab" />
            <xs:enumeration value="quz" />
            <xs:enumeration value="rct" />
            <xs:enumeration value="stu" />
            <xs:enumeration value="fld" />
            <xs:enumeration value="ind" />
            <xs:enumeration value="psi" />
        </xs:restriction>
    </xs:simpleType>
    
    
    <xs:complexType name="credits">
        <xs:sequence>
            <xs:element name="credit" type="credit" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
    
    <xs:complexType name="credit">
        <xs:simpleContent>
            <xs:extension base="xs:decimal">
                <xs:attribute name="type" type="creditType" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    
    <xs:simpleType name="creditType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Single Value" />
            <xs:enumeration value="Lower Range Limit" />
            <xs:enumeration value="Upper Range Limit" />
            <xs:enumeration value="Per Semester Limit" />
            <xs:enumeration value="Per Career Limit" />
        </xs:restriction>
    </xs:simpleType>


    <xs:complexType name="aceOutcomes">
        <xs:sequence>
            <xs:element name="slo" type="xs:positiveInteger" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>
        

</xs:schema>