<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
	targetNamespace="http://schema.gaaoc.us/eCitation/cdx/CitationDocument.xsd"
	elementFormDefault="qualified" attributeFormDefault="qualified"
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	xmlns:cd="http://schema.gaaoc.us/eCitation/cdx/CitationDocument.xsd">

	<xs:annotation>
		<xs:documentation>
			@(#)CitationDocument.xsd (Non-NIEM) v2.1
			06/14/2010
        </xs:documentation>
	</xs:annotation>

	<xs:element name="CitationDocument">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="CitationNumber">
					<xs:simpleType>
						<xs:restriction base="cd:String_25">
							<xs:minLength value="1"></xs:minLength>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>

				<xs:element name="LEACaseNumber" type="cd:String_25"
					nillable="true" />
				<xs:element name="CitationDate" type="cd:Date_TZ" />
				<xs:element name="CitationTime" type="cd:Time_TZ" minOccurs="0"
					nillable="true" />
				<xs:element ref="cd:Officer" minOccurs="0" />
				<xs:element ref="cd:Subject" />
				<xs:element ref="cd:DrivingIncident" />
				<xs:element ref="cd:Offense" />
				<xs:element name="LEANCICID">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:pattern value="[a-zA-Z0-9]*" />
							<xs:minLength value="7" />
							<xs:maxLength value="10" />
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="LicenseDisplayedInLieuOf" type="xs:boolean"
					minOccurs="0" nillable="true" />
				<xs:element name="ReleasedTo" type="cd:String_30"
					minOccurs="0" nillable="true" />
				<xs:element name="CitationImage" type="xs:base64Binary"
					minOccurs="0" nillable="true" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<xs:complexType name="SubjectType">
		<xs:sequence>
			<xs:element ref="cd:PersonName" minOccurs="0" />
			<xs:element name="DateOfBirth" type="xs:date" />
			<xs:element name="EyeColor" type="cd:String_10" minOccurs="0"
				nillable="true" />
			<xs:element name="HairColor" type="cd:String_10"
				minOccurs="0" nillable="true" />
			<xs:element name="Height" type="cd:String_5" minOccurs="0"
				nillable="true" />
			<xs:element name="Weight" type="cd:String_5" minOccurs="0"
				nillable="true" />
			<xs:element name="Sex">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:pattern value="M|F|U" />
						<xs:minLength value="1" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element ref="cd:SubjectAddress" />
			<xs:element ref="cd:DriverLicense" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="OfficerType">
		<xs:sequence>
			<xs:element name="FullName" type="cd:String_94" minOccurs="0"
				nillable="true" />
			<xs:element name="FirstName" type="cd:String_20"
				minOccurs="0" nillable="true" />
			<xs:element name="MiddleName" type="cd:String_20"
				minOccurs="0" nillable="true" />
			<xs:element name="LastName" type="cd:String_50" minOccurs="0"
				nillable="true" />
			<xs:element name="Suffix" type="cd:String_3" minOccurs="0"
				nillable="true" />
			<xs:element name="Rank" type="cd:String_25" minOccurs="0"
				nillable="true" />
			<xs:element name="BadgeID" type="cd:String_20" minOccurs="0"
				nillable="true" />
			<xs:element name="Division" type="cd:String_20" minOccurs="0"
				nillable="true" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="DrivingIncidentType">
		<xs:sequence>
			<xs:element name="Accident" type="xs:boolean" />
			<xs:element ref="cd:RoadCondition" minOccurs="0" />
			<xs:element ref="cd:RoadType" minOccurs="0" />
			<xs:element ref="cd:WeatherCondition" minOccurs="0" />
			<xs:element ref="cd:TrafficCondition" minOccurs="0" />
			<xs:element ref="cd:LightCondition" minOccurs="0" />
			<xs:element ref="cd:Speeding" />
			<xs:element ref="cd:DUI" />
			<xs:element ref="cd:IncidentLocation" />
			<xs:element ref="cd:Vehicle" minOccurs="0" />
			<xs:element name="AccidentReportID" type="cd:String_10"
				minOccurs="0" nillable="true" />
			<xs:element name="AccidentInjuries" type="xs:boolean" />
			<xs:element name="AccidentFatalities" type="xs:boolean" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="SpeedingType">
		<xs:sequence>
			<xs:element name="LegalSpeedRate">
				<xs:simpleType>
					<xs:restriction base="xs:integer">
						<xs:minInclusive value="0" />
						<xs:maxInclusive value="100" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="ActualSpeedRate">
				<xs:simpleType>
					<xs:restriction base="xs:integer">
						<xs:minInclusive value="0" />
						<xs:maxInclusive value="250" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="DriverRequestedAccuracyCheck" type="xs:boolean"
				minOccurs="0" nillable="true" />
			<xs:element ref="cd:ClockingDevice" minOccurs="0" />
		</xs:sequence>
	</xs:complexType>




	<xs:complexType name="ClockingDeviceType">
		<xs:sequence>
			<xs:element name="DeviceType" minOccurs="0" nillable="true">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="Vascar" />
						<xs:enumeration value="Laser" />
						<xs:enumeration value="Radar" />
						<xs:enumeration value="Patrol_Vehicle" />
						<xs:enumeration value="Other" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="SerialNo.">
				<xs:simpleType>
					<xs:restriction base="cd:String_15">
						<xs:minLength value="1" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element> 
			<xs:element name="CMDCalibration" type="cd:Time_TZ"
				minOccurs="0" nillable="true" />
			<xs:element name="CMDCheck" type="cd:Time_TZ" minOccurs="0"
				nillable="true" />
		</xs:sequence>
	</xs:complexType>


	<xs:simpleType name="WeatherConditionType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Cloudy" />
			<xs:enumeration value="Clear" />
			<xs:enumeration value="Raining" />
			<xs:enumeration value="Other" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="RoadConditionType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Dry" />
			<xs:enumeration value="Wet" />
			<xs:enumeration value="Ice" />
			<xs:enumeration value="Other" />
		</xs:restriction>
	</xs:simpleType>


	<xs:element name="RoadType" nillable="true">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:enumeration value="Concrete" />
				<xs:enumeration value="Blacktop" />
				<xs:enumeration value="Dirt" />
				<xs:enumeration value="Other" />
			</xs:restriction>
		</xs:simpleType>
	</xs:element>

	<xs:simpleType name="TrafficConditionType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Light" />
			<xs:enumeration value="Medium" />
			<xs:enumeration value="Heavy" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="LightConditionType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="DayLight" />
			<xs:enumeration value="Darkness" />
			<xs:enumeration value="Other" />
		</xs:restriction>
	</xs:simpleType>

	<xs:complexType name="DUIType">
		<xs:sequence>
			<xs:element name="DUITest" type="xs:boolean" />
			<xs:element ref="cd:TestAdministratedType" />
			<xs:element name="DUITestResult" type="cd:String_50"
				minOccurs="0" nillable="true" />
			<xs:element name="BAC">
				<xs:simpleType>
					<xs:restriction base="xs:double">
						<xs:minInclusive value="0" />
						<xs:maxInclusive value="3" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element ref="cd:DUITestAdministrator" minOccurs="0" />
		</xs:sequence>
	</xs:complexType>

	<xs:element name="DUITestAdministrator" nillable="true">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Name" type="cd:String_35" minOccurs="0"
					nillable="true" />
				<xs:element name="PermitNo" type="cd:String_15"
					minOccurs="0" nillable="true" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<xs:element name="TestAdministratedType">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Blood" type="xs:boolean" />
				<xs:element name="Breath" type="xs:boolean" />
				<xs:element name="Urine" type="xs:boolean" />
				<xs:element name="Other" type="xs:boolean" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>


	<xs:complexType name="OffenseType">
		<xs:sequence>
			<xs:element name="AOCCitationID" type="xs:positiveInteger" />
			<xs:element name="LEACitationCode">
				<xs:simpleType>
					<xs:restriction base="cd:String_25">
						<xs:minLength value="1" />
						<xs:pattern value="[A-Za-z0-9]*"></xs:pattern>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="LEACitationDescription">
				<xs:simpleType>
					<xs:restriction base="cd:String_50">
						<xs:minLength value="1" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="VehicleType">
		<xs:sequence>
			<xs:element name="Year" type="cd:Year" minOccurs="0"
				nillable="true" />
			<xs:element name="Make" type="cd:String_25" minOccurs="0"
				nillable="true" />
			<xs:element name="Model" type="cd:String_25" minOccurs="0"
				nillable="true" />
			<xs:element name="Style" type="cd:String_25" minOccurs="0"
				nillable="true" />
			<xs:element name="Color" type="cd:String_15" minOccurs="0"
				nillable="true" />
			<xs:element name="Description" type="cd:String_50"
				minOccurs="0" nillable="true" />
			<xs:element ref="cd:Registration" minOccurs="0" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="RegistrationType">
		<xs:sequence>
			<xs:element name="Number" type="cd:String_25" minOccurs="0"
				nillable="true" />
			<xs:element name="ExpirationDate" type="xs:date"
				minOccurs="0" nillable="true" />
			<xs:element name="State" type="cd:String_2" minOccurs="0"
				nillable="true" />
			<xs:element name="CommercialVehicle" type="xs:boolean"
				minOccurs="0" nillable="true" />
			<xs:element name="HazardousMaterialViolation" type="xs:boolean"
				minOccurs="0" nillable="true" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="DriverLicenseType">
		<xs:sequence>
			<xs:element name="LicenseNumber">
				<xs:simpleType>
					<xs:restriction base="cd:String_25">
						<xs:minLength value="1" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="LicenseClass">
				<xs:simpleType>
					<xs:restriction base="cd:String_30">
						<xs:minLength value="1" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="State">
				<xs:simpleType>
					<xs:restriction base="cd:String_2">
						<xs:minLength value="1" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="Endorsements" type="cd:String_50"
				minOccurs="0" nillable="true" />
			<xs:element name="RegistrationYear" type="cd:Year"
				minOccurs="0" nillable="true" />
			<xs:element name="ExpirationDate" type="xs:date"
				minOccurs="0" nillable="true" />
			<xs:element name="CommercialLicense" type="xs:boolean"
				minOccurs="0" nillable="true" />
			<xs:element name="IssueDate" type="xs:date" minOccurs="0"
				nillable="true" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="PersonNameType">
		<xs:sequence>
			<xs:element name="FirstName" type="cd:String_20"
				minOccurs="0" nillable="true" />
			<xs:element name="MiddleName" type="cd:String_20"
				minOccurs="0" nillable="true" />
			<xs:element name="LastName" type="cd:String_50" minOccurs="0"
				nillable="true" />
			<xs:element name="Suffix" type="cd:String_3" minOccurs="0"
				nillable="true" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="AddressType">
		<xs:sequence>
			<xs:element name="StreetAddress1" type="cd:String_50"
				minOccurs="0" nillable="true" />
			<xs:element name="StreetAddress2" type="cd:String_50"
				minOccurs="0" nillable="true" />
			<xs:element name="City" type="cd:String_20" minOccurs="0"
				nillable="true" />
			<xs:element name="State" type="cd:String_2" minOccurs="0"
				nillable="true" />
			<xs:element name="Zip1" minOccurs="0" nillable="true">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:pattern value="[0-9]{5}" />
						<xs:length value="5" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="Zip2" minOccurs="0" nillable="true">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:pattern value="[0-9]{4}" />
						<xs:length value="4" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="SubjectAddressType">
		<xs:sequence>
			<xs:element name="StreetAddress1" type="cd:String_50"
				minOccurs="0" nillable="true" />
			<xs:element name="StreetAddress2" type="cd:String_50"
				minOccurs="0" nillable="true" />
			<xs:element name="City" type="cd:String_20" minOccurs="0"
				nillable="true" />
			<xs:element name="State" type="cd:String_2" minOccurs="0"
				nillable="true" />
			<xs:element name="Zip1">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:pattern value="[0-9]{5}" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="Zip2" minOccurs="0" nillable="true">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:pattern value="[0-9]{4}" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="AddressDiffRegistration" type="xs:boolean"
				minOccurs="0" nillable="true" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="IncidentLocationType">
		<xs:sequence>
			<xs:element name="CountyID">
				<xs:simpleType>
					<xs:restriction base="xs:integer">
						<xs:minInclusive value="0" />
						<xs:maxInclusive value="1590" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="Mile" type="cd:String_20" minOccurs="0"
				nillable="true" />
			<xs:element name="NearestCity" type="cd:String_20"
				minOccurs="0" nillable="true" />
			<xs:element name="Road" type="cd:String_20" minOccurs="0"
				nillable="true" />
			<xs:element name="WithinCity" type="cd:String_20"
				minOccurs="0" nillable="true" />
			<xs:element name="AtOrNearMilePost" type="cd:String_20"
				minOccurs="0" nillable="true" />
			<xs:element name="SecondaryLocation" type="cd:String_50"
				minOccurs="0" nillable="true" />
			<xs:element name="Latitude" type="xs:double" minOccurs="0"
				nillable="true" />
			<xs:element name="Longitude" type="xs:double" minOccurs="0"
				nillable="true" />
		</xs:sequence>
	</xs:complexType>

	
	<xs:complexType name="LicenseSuspensionType">
		<xs:sequence>
			<xs:element name="SuspensionBeginDate" type="xs:date" minOccurs="0" nillable="true" />
			<xs:element name="SuspensionEndDate" type="xs:date" minOccurs="0" nillable="true" />		
		</xs:sequence>
	</xs:complexType>	

	<xs:simpleType name="Date_TZ">
		<xs:restriction base="xs:date">
			<xs:pattern value=".*(((\+|\-)\d{2}:\d{2})|Z)" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="Time_TZ">
		<xs:restriction base="xs:time">
			<xs:pattern value=".*(((\+|\-)\d{2}:\d{2})|Z)" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="Year">
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="1900" />
			<xs:maxInclusive value="2200" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="String_2">
		<xs:restriction base="xs:string">
			<xs:maxLength value="2" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="String_3">
		<xs:restriction base="xs:string">
			<xs:maxLength value="3" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="String_7">
		<xs:restriction base="xs:string">
			<xs:maxLength value="7" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="String_5">
		<xs:restriction base="xs:string">
			<xs:maxLength value="5" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="String_10">
		<xs:restriction base="xs:string">
			<xs:maxLength value="10" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="String_15">
		<xs:restriction base="xs:string">
			<xs:maxLength value="15" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="String_20">
		<xs:restriction base="xs:string">
			<xs:maxLength value="20" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="String_25">
		<xs:restriction base="xs:string">
			<xs:maxLength value="25" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="String_30">
		<xs:restriction base="xs:string">
			<xs:maxLength value="30" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="String_35">
		<xs:restriction base="xs:string">
			<xs:maxLength value="35" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="String_50">
		<xs:restriction base="xs:string">
			<xs:maxLength value="50" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="String_90">
		<xs:restriction base="xs:string">
			<xs:maxLength value="90" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="String_94">
		<xs:restriction base="xs:string">
			<xs:maxLength value="94" />
		</xs:restriction>
	</xs:simpleType>

	<xs:element name="PersonName" type="cd:PersonNameType"
		nillable="true" />
	<xs:element name="Address" type="cd:AddressType" nillable="true" />
	<xs:element name="SubjectAddress" type="cd:SubjectAddressType" />
	<xs:element name="IncidentLocation" type="cd:IncidentLocationType" />
	<xs:element name="DriverLicense" type="cd:DriverLicenseType" />
	<xs:element name="Officer" type="cd:OfficerType" nillable="true" />
	<xs:element name="Subject" type="cd:SubjectType" />
	<xs:element name="Registration" type="cd:RegistrationType"
		nillable="true" />
	<xs:element name="Vehicle" type="cd:VehicleType" nillable="true" />
	<xs:element name="Speeding" type="cd:SpeedingType" />
	<xs:element name="DUI" type="cd:DUIType" />
	<xs:element name="DrivingIncident" type="cd:DrivingIncidentType" />
	<xs:element name="Offense" type="cd:OffenseType" />
	<xs:element name="ClockingDevice" type="cd:ClockingDeviceType"
		nillable="true" />
	<xs:element name="RoadCondition" type="cd:RoadConditionType"
		nillable="true" />
	<xs:element name="WeatherCondition" type="cd:WeatherConditionType"
		nillable="true" />
	<xs:element name="LightCondition" type="cd:LightConditionType"
		nillable="true" />
	<xs:element name="TrafficCondition" type="cd:TrafficConditionType"
		nillable="true" />
	<xs:element name="LicenseSuspension" type="cd:LicenseSuspensionType"
		nillable="true" />
</xs:schema>