﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:annotation>
    <xs:documentation>General Teacher Student Data Link 2026-2027</xs:documentation>
  </xs:annotation>
  <xs:element name="GeneralTeacherStudentDataLinkGroup">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="GeneralTeacherStudentDataLink">
          <xs:complexType>
            <xs:sequence>
              <xs:element minOccurs="1" maxOccurs="1" name="SubmittingEntity" type="SubmittingEntityType" />
              <xs:element minOccurs="1" maxOccurs="1" name="PersonalCore" type="PersonalCoreType" />
              <xs:element minOccurs="1" maxOccurs="1" name="SchoolDemographics" type="SchoolDemographicsType" />
              <xs:element minOccurs="1" maxOccurs="unbounded" name="StudentCourse" type="StudentCourseType" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute fixed="2026-2027" name="SchemaVersionMajor" type="xs:string" use="required" />
      <xs:attribute fixed="1" name="SchemaVersionMinor" type="xs:string" use="required" />
      <xs:attribute fixed="309" name="CollectionId" type="xs:int" use="required" />
      <xs:attribute fixed="GeneralTeacherStudentDataLink" name="CollectionName" type="xs:string" />
      <xs:attribute name="SubmittingSystemVendor" type="xs:string" use="required" />
      <xs:attribute name="SubmittingSystemName" type="xs:string" use="required" />
      <xs:attribute name="SubmittingSystemVersion" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  <xs:complexType name="SubmittingEntityType">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="SubmittingEntityTypeCode" type="SubmittingEntityTypeCodeType" />
      <xs:element minOccurs="1" maxOccurs="1" name="SubmittingEntityCode" type="SubmittingEntityCodeType" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="SubmittingEntityTypeCodeType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="A" />
      <xs:enumeration value="B" />
      <xs:enumeration value="D" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="SubmittingEntityCodeType">
    <xs:restriction base="xs:string">
      <xs:minLength value="5" />
      <xs:maxLength value="10" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="PersonalCoreType">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="UIC" type="UICType" />
      <xs:element minOccurs="1" maxOccurs="1" name="LastName" type="LastNameType" />
      <xs:element minOccurs="1" maxOccurs="1" name="FirstName" type="FirstNameType" />
      <xs:element minOccurs="0" maxOccurs="1" name="MiddleName" type="MiddleNameType" />
      <xs:element minOccurs="0" maxOccurs="1" name="StudentSuffix" type="StudentSuffixType" />
      <xs:element minOccurs="1" maxOccurs="1" name="DateOfBirth" type="DateOfBirthType" />
      <xs:element minOccurs="0" maxOccurs="1" name="MultipleBirthOrder" type="MultipleBirthOrderType" />
      <xs:element minOccurs="1" maxOccurs="1" name="Gender" type="GenderType" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="UICType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[0-9]{10,10}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="LastNameType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[A-Za-z'\-.,\s]{1,50}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="FirstNameType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[A-Za-z'\-.,\s]{1,50}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="MiddleNameType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[A-Za-z'\-.,\s]{1,50}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="StudentSuffixType">
    <xs:restriction base="xs:string">
      <xs:minLength value="1" />
      <xs:maxLength value="10" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="DateOfBirthType">
    <xs:restriction base="xs:date">
      <xs:minInclusive value="1753-01-01" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="MultipleBirthOrderType">
    <xs:restriction base="xs:int">
      <xs:minInclusive value="0" />
      <xs:maxInclusive value="9" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="GenderType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="M" />
      <xs:enumeration value="F" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="SchoolDemographicsType">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="OperatingDistrictNumber" type="OperatingDistrictNumberType" />
      <xs:element minOccurs="0" maxOccurs="1" name="SchoolFacilityNumber" type="SchoolFacilityNumberType" />
      <xs:element minOccurs="0" maxOccurs="1" name="StudentIdNumber" type="StudentIdNumberType" />
      <xs:element minOccurs="1" maxOccurs="1" name="GradeOrSetting" type="GradeOrSettingType" />
      <xs:element minOccurs="0" maxOccurs="1" name="S2E2Code" type="S2E2CodeType" />
      <xs:element minOccurs="0" maxOccurs="1" name="BldgOtherwiseAttend" type="BldgOtherwiseAttendType" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="OperatingDistrictNumberType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[0-9]{5,5}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="SchoolFacilityNumberType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[0-9]{5,5}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="StudentIdNumberType">
    <xs:restriction base="xs:string">
      <xs:minLength value="1" />
      <xs:maxLength value="20" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="GradeOrSettingType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="00" />
      <xs:enumeration value="01" />
      <xs:enumeration value="02" />
      <xs:enumeration value="03" />
      <xs:enumeration value="04" />
      <xs:enumeration value="05" />
      <xs:enumeration value="06" />
      <xs:enumeration value="07" />
      <xs:enumeration value="08" />
      <xs:enumeration value="09" />
      <xs:enumeration value="10" />
      <xs:enumeration value="11" />
      <xs:enumeration value="12" />
      <xs:enumeration value="14" />
      <xs:enumeration value="20" />
      <xs:enumeration value="30" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="S2E2CodeType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[0-9]{5,5}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="BldgOtherwiseAttendType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[0-9]{5,5}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="StudentCourseType">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="SubjectAreaCode" type="SubjectAreaCodeType" />
      <xs:element minOccurs="0" maxOccurs="1" name="CourseIdentifierCode" type="CourseIdentifierCodeType" />
      <xs:element minOccurs="1" maxOccurs="1" name="LocalCourseId" type="LocalCourseIdType" />
      <xs:element minOccurs="1" maxOccurs="1" name="LocalCourseTitle" type="LocalCourseTitleType" />
      <xs:element minOccurs="0" maxOccurs="1" name="CourseSectionID" type="CourseSectionIDType" />
      <xs:element minOccurs="0" maxOccurs="1" name="MSIXCourseSectionID" type="MSIXCourseSectionIDType" />
      <xs:element minOccurs="1" maxOccurs="1" name="CourseType" type="CourseTypeType" />
      <xs:element minOccurs="0" maxOccurs="1" name="CourseFundingProgram" type="CourseFundingProgramType" />
      <xs:element minOccurs="0" maxOccurs="1" name="AcademicYear" type="AcademicYearType" />
      <xs:element minOccurs="0" maxOccurs="1" name="CreditsGranted" type="CreditsGrantedType" />
      <xs:element minOccurs="0" maxOccurs="1" name="CourseGrade" type="CourseGradeType" />
      <xs:element minOccurs="1" maxOccurs="1" name="CompletionStatus" type="CompletionStatusType" />
      <xs:element minOccurs="0" maxOccurs="1" name="MSIXClockHours" type="MSIXClockHoursType" />
      <xs:element minOccurs="0" maxOccurs="1" name="CollegeCredit" type="CollegeCreditType" />
      <xs:element minOccurs="0" maxOccurs="3" name="PIC" type="PICType" />
      <xs:element minOccurs="0" maxOccurs="1" name="VirtualMethod" type="VirtualMethodType" />
      <xs:element minOccurs="0" maxOccurs="3" name="MentorPIC" type="MentorPICType" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="SubjectAreaCodeType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="01" />
      <xs:enumeration value="02" />
      <xs:enumeration value="03" />
      <xs:enumeration value="04" />
      <xs:enumeration value="05" />
      <xs:enumeration value="07" />
      <xs:enumeration value="08" />
      <xs:enumeration value="09" />
      <xs:enumeration value="10" />
      <xs:enumeration value="11" />
      <xs:enumeration value="12" />
      <xs:enumeration value="13" />
      <xs:enumeration value="14" />
      <xs:enumeration value="15" />
      <xs:enumeration value="16" />
      <xs:enumeration value="17" />
      <xs:enumeration value="18" />
      <xs:enumeration value="19" />
      <xs:enumeration value="20" />
      <xs:enumeration value="21" />
      <xs:enumeration value="22" />
      <xs:enumeration value="23" />
      <xs:enumeration value="24" />
      <xs:enumeration value="25" />
      <xs:enumeration value="00" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="CourseIdentifierCodeType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[0-9]{3,3}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="LocalCourseIdType">
    <xs:restriction base="xs:string">
      <xs:minLength value="1" />
      <xs:maxLength value="250" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="LocalCourseTitleType">
    <xs:restriction base="xs:string">
      <xs:minLength value="1" />
      <xs:maxLength value="250" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="CourseSectionIDType">
    <xs:restriction base="xs:string">
      <xs:minLength value="1" />
      <xs:maxLength value="20" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="MSIXCourseSectionIDType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="01" />
      <xs:enumeration value="02" />
      <xs:enumeration value="03" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="CourseTypeType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="01" />
      <xs:enumeration value="02" />
      <xs:enumeration value="03" />
      <xs:enumeration value="04" />
      <xs:enumeration value="05" />
      <xs:enumeration value="06" />
      <xs:enumeration value="07" />
      <xs:enumeration value="00" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="CourseFundingProgramType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="01" />
      <xs:enumeration value="02" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="AcademicYearType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="2026-2027" />
      <xs:enumeration value="2025-2026" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="CreditsGrantedType">
    <xs:restriction base="xs:decimal">
      <xs:minInclusive value="0.00" />
      <xs:maxInclusive value="9.99" />
      <xs:fractionDigits value="2" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="CourseGradeType">
    <xs:restriction base="xs:string">
      <xs:minLength value="1" />
      <xs:maxLength value="25" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="CompletionStatusType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="AU" />
      <xs:enumeration value="TO" />
      <xs:enumeration value="OE" />
      <xs:enumeration value="CP" />
      <xs:enumeration value="CF" />
      <xs:enumeration value="CS" />
      <xs:enumeration value="WE" />
      <xs:enumeration value="WP" />
      <xs:enumeration value="WF" />
      <xs:enumeration value="I" />
      <xs:enumeration value="ER" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="MSIXClockHoursType">
    <xs:restriction base="xs:int">
      <xs:minInclusive value="0" />
      <xs:maxInclusive value="600" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="CollegeCreditType">
    <xs:restriction base="xs:decimal">
      <xs:minInclusive value="0.00" />
      <xs:maxInclusive value="25.00" />
      <xs:fractionDigits value="2" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="PICType">
    <xs:restriction base="xs:int" />
  </xs:simpleType>
  <xs:simpleType name="VirtualMethodType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="BL" />
      <xs:enumeration value="DL" />
      <xs:enumeration value="OC" />
      <xs:enumeration value="NV" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="MentorPICType">
    <xs:restriction base="xs:int" />
  </xs:simpleType>
</xs:schema>