<?xml version="1.0" encoding="UTF-8"?>

<xs:schema targetNamespace="http://www.immigration.gov/xmlschema/sevisbatch/Common" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:common="http://www.immigration.gov/xmlschema/sevisbatch/Common" xmlns:table="http://www.immigration.gov/xmlschema/sevisbatch/Table" elementFormDefault="unqualified" attributeFormDefault="unqualified" version="1.0">
	<xs:import namespace="http://www.immigration.gov/xmlschema/sevisbatch/Table" schemaLocation="SEVISTable.xsd"/>
	<xs:simpleType name="Name">
		<xs:restriction base="xs:string">
			<xs:maxLength value="60"/>
			<xs:minLength value="1"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="SchoolCodeType">
		<xs:annotation>
			<xs:documentation>Global School Code</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="[A-Z]{3}214F\d{8}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ProgramNumberType">
		<xs:annotation>
			<xs:documentation>Global Program Number type</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="(P-[1-4]-\d{5})|(G-[1-6]-\d{5})"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ErrorCodeType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="S0001"/>
			<xs:enumeration value="S0002"/>
			<xs:enumeration value="S0003"/>
			<xs:enumeration value="S0004"/>
			<xs:enumeration value="S0005"/>
			<xs:enumeration value="S0006"/>
			<xs:enumeration value="S0007"/>
			<xs:enumeration value="S0008"/>
			<xs:enumeration value="S0009"/>
			<xs:enumeration value="S0010"/>
			<xs:enumeration value="S0011"/>
			<xs:enumeration value="S0012"/>
			<xs:enumeration value="S0013"/>
			<xs:enumeration value="S0014"/>
			<xs:enumeration value="S0015"/>
			<xs:enumeration value="S0016"/>
			<xs:enumeration value="S0017"/>
			<xs:enumeration value="S0018"/>
			<xs:enumeration value="S0019"/>
			<xs:enumeration value="S0020"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="BatchIDType">
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
			<xs:maxLength value="14"/>
			<xs:whiteSpace value="collapse"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="RequestID">
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
			<xs:maxLength value="20"/>
			<xs:whiteSpace value="collapse"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="UserIdType">
		<xs:annotation>
			<xs:documentation>Global user ID</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="((([a-zA-Z]{6})|([a-zA-Z]{1}-[a-zA-Z]{4})|([a-zA-Z]{2}-[a-zA-Z]{3})|([a-zA-Z]{3}-[a-zA-Z]{2})|([a-zA-Z]{4}-[a-zA-Z]{1})|([a-zA-Z]{5}-))\d{4})"/>
			<xs:pattern value="((([a-zA-Z]{5})|([a-zA-Z]{1}-[a-zA-Z]{3})|([a-zA-Z]{2}-[a-zA-Z]{2})|([a-zA-Z]{3}-[a-zA-Z]{1})|([a-zA-Z]{4}-))\d{5})"/>
			<xs:pattern value="((([a-zA-Z]{4})|([a-zA-Z]{1}-[a-zA-Z]{2})|([a-zA-Z]{2}-[a-zA-Z]{1})|([a-zA-Z]{3}-))\d{6})"/>
			<xs:pattern value="((([a-zA-Z]{3})|([a-zA-Z]{1}-[a-zA-Z]{1})|([a-zA-Z]{2}-))\d{7})"/>
		</xs:restriction>
		<!--Do not edit CZL-->
	</xs:simpleType>
	<xs:simpleType name="RemarksType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="500"/>
			<xs:whiteSpace value="preserve"/>
			<xs:minLength value="1"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="SevisIDType">
		<xs:restriction base="xs:string">
			<xs:pattern value="N\d{10}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="USAddressType">
		<xs:sequence>
			<xs:element name="USAddr1">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:whiteSpace value="preserve"/>
						<xs:maxLength value="60"/>
						<xs:minLength value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="USAddr2" minOccurs="0">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:whiteSpace value="preserve"/>
						<xs:maxLength value="60"/>
						<xs:minLength value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="USCity">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:whiteSpace value="preserve"/>
						<xs:maxLength value="60"/>
						<xs:minLength value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="USState" type="table:StateCodeType"/>
			<xs:element name="USPostalCode" type="table:USPostalType">
				<xs:annotation>
					<xs:documentation>5 digit postal code</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="USPostalRoutingCode" type="table:USPostalRoutingType" minOccurs="0">
				<xs:annotation>
					<xs:documentation>4 digit postal routing code</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ForeignAddrType">
		<xs:annotation>
			<xs:documentation>Global foreign address information</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="FrnAddr1">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:whiteSpace value="preserve"/>
						<xs:maxLength value="60"/>
						<xs:minLength value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="FrnAddr2" minOccurs="0">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:whiteSpace value="preserve"/>
						<xs:maxLength value="60"/>
						<xs:minLength value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="FrnCity" minOccurs="0">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:whiteSpace value="preserve"/>
						<xs:maxLength value="60"/>
						<xs:minLength value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="FrnProvince" minOccurs="0">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:whiteSpace value="preserve"/>
						<xs:maxLength value="30"/>
						<xs:minLength value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="CountryCode" type="table:CntryCodeType"/>
			<xs:element name="FrnPostalCode" minOccurs="0">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:maxLength value="20"/>
						<xs:minLength value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="NameType">
		<xs:sequence>
			<xs:element name="LastName">
				<xs:annotation>
					<xs:documentation>Family name</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:whiteSpace value="preserve"/>
						<xs:maxLength value="40"/>
						<xs:minLength value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="FirstName" minOccurs="0">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:whiteSpace value="preserve"/>
						<xs:maxLength value="40"/>
						<xs:minLength value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="MiddleName" minOccurs="0">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:maxLength value="40"/>
						<xs:whiteSpace value="preserve"/>
						<xs:minLength value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="Suffix" type="table:NameSuffixCodeType" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="OtherEVFundsType">
		<xs:sequence>
			<xs:element name="USGovtOrg" minOccurs="0">
				<xs:annotation>
					<xs:documentation>U.S Government Agency(ies): [max of 2]</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="GovtOrg1" type="table:GovAgencyCodeType" minOccurs="0"/>
						<xs:element name="GovtOrg1Amount" type="table:MonetaryType" minOccurs="0"/>
						<xs:element name="GovtOrg2" type="table:GovAgencyCodeType" minOccurs="0"/>
						<xs:element name="GovtOrg2Amount" type="table:MonetaryType" minOccurs="0"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="InternatOrg" minOccurs="0">
				<xs:annotation>
					<xs:documentation>International Organization(s):[max of 2]</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="InternatOrg1" type="table:InternationalOrgCodeType" minOccurs="0"/>
						<xs:element name="InternatOrg1Amount" type="table:MonetaryType" minOccurs="0"/>
						<xs:element name="InternatOrg2" type="table:InternationalOrgCodeType" minOccurs="0"/>
						<xs:element name="InternatOrg2Amount" type="table:MonetaryType" minOccurs="0"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="EVGovt" type="table:MonetaryType" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Funds from Exchange Visitor's Government</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="BinationalCommission" type="table:MonetaryType" minOccurs="0">
				<xs:annotation>
					<xs:documentation>The Binational Commission of the Exchange Visitor's Country</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="OtherOrg" type="table:MonetaryType" minOccurs="0">
				<xs:annotation>
					<xs:documentation>All other organizations providing support</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="PersonalFunds" type="table:MonetaryType" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Personal funds</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="FRemarks" type="common:RemarksType" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="NonImgStudentBioType">
		<xs:annotation>
			<xs:documentation>Nonimmigrant bio information</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="FullName" type="common:NameType"/>
			<xs:element name="BirthDate" type="table:DateType"/>
			<xs:element name="Gender" type="table:GenderCodeType">
				<xs:annotation>
					<xs:documentation>Male, Female or Unknown</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="BirthCountryCode" type="table:CntryCodeType"/>
			<xs:element name="CitizenshipCountryCode" type="table:CntryCodeType" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="NonImgEVBioTypeOptional">
		<xs:annotation>
			<xs:documentation>Nonimmigrant bio information</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="FullName" type="common:NameType" minOccurs="0"/>
			<xs:element name="BirthDate" type="table:DateType" minOccurs="0"/>
			<xs:element name="Gender" type="table:GenderCodeType" minOccurs="0"/>
			<xs:element name="BirthCity" type="xs:string" minOccurs="0"/>
			<xs:element name="BirthCountryCode" type="table:CntryCodeWithoutType" minOccurs="0"/>
			<xs:element name="CitizenshipCountryCode" type="table:CntryCodeWithoutType" minOccurs="0"/>
			<xs:element name="PermanentResidenceCountryCode" type="table:CntryCodeWithoutType" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="NonImgEVBioType">
		<xs:annotation>
			<xs:documentation>Nonimmigrant bio information</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="FullName" type="common:NameType"/>
			<xs:element name="BirthDate" type="table:DateType"/>
			<xs:element name="Gender" type="table:GenderCodeType"/>
			<xs:element name="BirthCity" type="xs:string"/>
			<xs:element name="BirthCountryCode" type="table:CntryCodeWithoutType"/>
			<xs:element name="CitizenshipCountryCode" type="table:CntryCodeWithoutType"/>
			<xs:element name="PermanentResidenceCountryCode" type="table:CntryCodeWithoutType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="IssueReasonStudentType">
		<xs:sequence>
			<xs:element name="Initial" type="table:StudentCreationReason">
				<xs:annotation>
					<xs:documentation>Initial attendance</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		
	</xs:complexType>
	<xs:complexType name="IssueReasonEvType">
		<xs:sequence>
			<xs:annotation>
				<xs:documentation>Must choose one</xs:documentation>
			</xs:annotation>
			<xs:element name="ReasonCode" type="table:EVCreateReasonType">
				<xs:annotation>
					<xs:documentation>Reason for isssue.</xs:documentation>
				</xs:annotation>
			</xs:element>
	
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="DriverLicenseType">
		<xs:sequence>
			<xs:element name="LicNumber" minOccurs="0">
				<xs:annotation>
					<xs:documentation>maxLen = 30</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:maxLength value="30"/>
						<xs:minLength value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="LicState" type="table:StateCodeType" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Two char state code</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
</xs:schema>
