<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns="http://www.netdimensions.com/2010/03/courses"
            targetNamespace="http://www.netdimensions.com/2010/03/courses"
            elementFormDefault="qualified">

  <xsd:element name="courses">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="course" type="course" minOccurs="0" maxOccurs="unbounded"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

  <xsd:complexType name="course">
    <xsd:sequence>
      <xsd:element name="id" type="xsd:string"/>
      <xsd:element name="title" type="xsd:string" minOccurs="0"/>
      <xsd:element name="learningType" type="learningType" minOccurs="0"/>
      <xsd:element name="duration" type="xsd:string" minOccurs="0"/>
      <xsd:element name="description" type="xsd:string" minOccurs="0"/>
      <xsd:element name="audience" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="moreInfoLink" type="xsd:string" minOccurs="0"/>
      <xsd:element name="showInCatalog" type="xsd:boolean" minOccurs="0"/>
      <xsd:element name="moduleAttribute" type="moduleAttribute" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="prerequisite" type="prerequisite" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="enrollmentPolicyName" type="xsd:string" minOccurs="0"/>
      <xsd:element name="cost" type="cost" minOccurs="0"/>
      <xsd:element name="session" type="session" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="certification" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="prerequisite">
    <xsd:sequence>
      <xsd:element name="learningid" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="moduleAttribute">
    <xsd:sequence>
      <xsd:element name="code" type="xsd:string"/>
      <xsd:element name="value" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="session">
    <xsd:sequence>
      <xsd:element name="code" type="xsd:string"/>
      <xsd:element name="title" type="xsd:string" minOccurs="0"/>
      <xsd:element name="enrollmentStart" type="xsd:dateTime" minOccurs="0"/>
      <xsd:element name="enrollmentEnd" type="xsd:dateTime" minOccurs="0"/>
      <xsd:element name="geographicRegion" type="xsd:string" minOccurs="0"/>
      <xsd:element name="orgCodeConstraint" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="enrollmentLimit" type="xsd:nonNegativeInteger" minOccurs="0"/>
      <xsd:element name="trainingHours" type="xsd:decimal" minOccurs="0"/>
      <xsd:element name="sessionStatus" type="sessionStatus" minOccurs="0"/>
      <xsd:element name="cost" type="cost" minOccurs="0"/>
      <xsd:element name="class" type="class" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="action" type="action" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="class">
    <xsd:sequence>
      <xsd:element name="classStart" type="xsd:dateTime" minOccurs="0"/>
      <xsd:element name="classEnd" type="xsd:dateTime" minOccurs="0"/>
      <xsd:element name="roomName" type="xsd:string" minOccurs="0"/>
      <xsd:element name="venue" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:simpleType name="action">
    <xsd:restriction base="xsd:NCName">
      <xsd:enumeration value="add"/>
      <xsd:enumeration value="update"/>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="sessionStatus">
    <xsd:restriction base="xsd:NCName">
      <xsd:enumeration value="active"/>
      <xsd:enumeration value="pending"/>
      <xsd:enumeration value="completed"/>
      <xsd:enumeration value="closed"/>
      <xsd:enumeration value="cancelled"/>
      <xsd:enumeration value="invitation"/>
      <xsd:enumeration value="prompt"/>
      <xsd:enumeration value="retired"/>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="learningType">
    <xsd:restriction base="xsd:NCName">
      <xsd:enumeration value="classroom"/>
      <xsd:enumeration value="online"/>
      <xsd:enumeration value="audio_cassette"/>
      <xsd:enumeration value="book"/>
      <xsd:enumeration value="cdrom"/>
      <xsd:enumeration value="exam"/>
      <xsd:enumeration value="ext_certification"/>
      <xsd:enumeration value="ext_course"/>
      <xsd:enumeration value="jit_learning"/>
      <xsd:enumeration value="video"/>
      <xsd:enumeration value="virtual_classroom"/>
      <xsd:enumeration value="arch_virtual_classroom"/>
      <xsd:enumeration value="workshop_seminar"/>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:complexType name="cost">
    <xsd:sequence>
      <xsd:element name="costType" type="costType"/>
      <xsd:element name="value" type="xsd:decimal"/>
      <xsd:element name="currency" type="xsd:string"/>
      <xsd:element name="optionalItem" type="optionalItem" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="optionalItem">
    <xsd:sequence>
      <xsd:element name="code" type="xsd:string"/>
      <xsd:element name="value" type="xsd:decimal"/>
      <xsd:element name="offering" type="offering"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:simpleType name="offering">
    <xsd:restriction base="xsd:NCName">
      <xsd:enumeration value="night"/>
      <xsd:enumeration value="unit"/>
      <xsd:enumeration value="business_night"/>
      <xsd:enumeration value="week"/>
      <xsd:enumeration value="percent"/>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="costType">
    <xsd:restriction base="xsd:NCName">
      <xsd:enumeration value="noCharge"/>
      <xsd:enumeration value="useModuleSetting"/>
      <xsd:enumeration value="perRegistration"/>
      <xsd:enumeration value="onlinePayment"/>
    </xsd:restriction>
  </xsd:simpleType>

</xsd:schema>
