<?xml version="1.0" encoding="utf-8"?>
<!-- $Id: personal.xsd 95650 2010-09-01 22:14:07Z andre.burgaud $ -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.infinitecampus.com/XMLSchema"
           targetNamespace="http://www.infinitecampus.com/XMLSchema"
           elementFormDefault="qualified" >
  <xs:element name="Student">
    <xs:complexType>
      <xs:sequence maxOccurs="unbounded">
        <xs:element name="StudentPersonal" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <!-- SAUID of the uploader -->
              <xs:element name="SAUID" type="xs:integer"/>
              <xs:element name="SchoolStudentID" type="String0to10"/>
              <xs:element name="StateStudentID" type="String9to9NULL"/>
              <xs:element name="MedicaidID" type="String9to9NULL_2"/>
              <xs:element name="MedicaidStartDate" type="xs:date"/>
              <xs:element name="MedicaidEndDate" type="xs:date"/>
              <xs:element name="MedicaidVerificationDate" type="xs:date"/>
              <xs:element name="MedicaidReleaseDate" type="xs:date"/>
              <xs:element name="SSN" type="String9to9NULL"/>
              <xs:element name="LastName" type="String1to50_2"/>
              <xs:element name="FirstName" type="String1to50_2"/>
              <xs:element name="MiddleName" type="String0to50_2"/>
              <xs:element name="Alias" type="String0to50_2"/>
              <xs:element name="NameSuffixCode">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:pattern value="[Jj][Rr]"/>
                    <xs:pattern value="[Ss][Rr]"/>
                    <xs:pattern value="[Ii][Ii]"/>
                    <xs:pattern value="[Ii][Ii][Ii]"/>
                    <xs:pattern value="[Ii][Vv]"/>
                    <xs:pattern value="[Vv]"/>
                    <xs:pattern value=""/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Demographics">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="HispanicLatino" type="String1to1YesNoStrict"/>
                    <xs:element name="AmericanIndianAlaskaNative" type="String1to1YesNoStrict"/>
                    <xs:element name="Asian" type="String1to1YesNoStrict"/>
                    <xs:element name="BlackAfricanAmerican" type="String1to1YesNoStrict"/>
                    <xs:element name="NativeHawaiianPacificIslander" type="String1to1YesNoStrict"/>
                    <xs:element name="White" type="String1to1YesNoStrict"/>
                    <xs:element name="Determination">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:pattern value="0[1-4]"/>
                          <xs:pattern value=""/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="Gender">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:pattern value="[Mm]"/>
                          <xs:pattern value="[Ff]"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="BirthDate" type="xs:date"/>
                    <xs:element name="CityTownOfBirth" type="String1to25"/>
                    <xs:element name="StateOfBirth" type="xs:string"/>
                    <xs:element name="CountryOfBirth" type="xs:string"/>
                    <xs:element name="USArrivalDate" type="xs:string"/>
                    <xs:element name="USSchoolDate" type="xs:string"/>
                    <xs:element name="ImmigrantFlag" type="String1to1YesNo"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="StudentContact">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="MotherMaidenName" type="String0to50_2"/>
                    <xs:element name="ParentGuardian1LastName" type="String0to50_2"/>
                    <xs:element name="ParentGuardian1FirstName" type="String0to50_2"/>
                    <xs:element name="ParentGuardian2LastName" type="String0to50_2" minOccurs="0"/>
                    <xs:element name="ParentGuardian2FirstName" type="String0to50_2" minOccurs="0"/>
                    <xs:element name="AddressLine1" type="String0to50"/>
                    <xs:element name="AddressLine2" type="String0to50"/>
                    <xs:element name="CityTown" type="xs:string"/>
                    <xs:element name="StateProvince" type="xs:string"/>
                    <xs:element name="ZipCode" type="xs:string"/>
                    <xs:element name="HomePhone" type="xs:string"/>
                    <xs:element name="Email" type="xs:string"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="String0to10">
    <xs:restriction base="xs:string">
      <xs:minLength value="0"/>
      <xs:maxLength value="10"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="String1to50_2">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:maxLength value="50"/>
      <xs:pattern value="([a-zA-Z\-'. ])*"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="String0to50_2">
    <xs:restriction base="xs:string">
      <xs:maxLength value="50"/>
      <xs:minLength value="0"/>
      <xs:pattern value="([a-zA-Z\-.' ])*"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="String1to1YesNo">
    <xs:restriction base="xs:string">
      <xs:pattern value="[yY]"/>
      <xs:pattern value="[nN]"/>
      <xs:pattern value=""/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="String1to1YesNoStrict">
    <xs:restriction base="xs:string">
      <xs:pattern value="[yY]"/>
      <xs:pattern value="[nN]"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="String1to25">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:maxLength value="25"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="String0to50">
    <xs:restriction base="xs:string">
      <xs:minLength value="0"/>
      <xs:maxLength value="50"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="String9to9NULL">
    <xs:restriction base="xs:string">
      <xs:pattern value="\d{9}"/>
      <xs:pattern value=""/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="String9to9NULL_2">
    <xs:restriction base="xs:string">
      <xs:pattern value="\w{9}"/>
      <xs:pattern value=""/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>
