<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="transaction">
		<xs:complexType>
			<xs:all>
				<xs:element name="company" type="companyInfo" minOccurs="0"/>
				<xs:element name="employees" type="employeeList" minOccurs="0"/>
			</xs:all>
		</xs:complexType>
	</xs:element>

	<xs:simpleType name="string6">
		<xs:restriction base="xs:string">
			<xs:maxLength value="6"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="string7">
		<xs:restriction base="xs:string">
			<xs:maxLength value="7"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="string15">
		<xs:restriction base="xs:string">
			<xs:maxLength value="15"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="string25">
		<xs:restriction base="xs:string">
			<xs:maxLength value="25"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="string30">
		<xs:restriction base="xs:string">
			<xs:maxLength value="30"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="string40">
		<xs:restriction base="xs:string">
			<xs:maxLength value="40"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="string50">
		<xs:restriction base="xs:string">
			<xs:maxLength value="50"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="string60">
		<xs:restriction base="xs:string">
			<xs:maxLength value="60"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="string100">
		<xs:restriction base="xs:string">
			<xs:maxLength value="100"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="string200">
		<xs:restriction base="xs:string">
			<xs:maxLength value="200"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="string250">
		<xs:restriction base="xs:string">
			<xs:maxLength value="250"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="string255">
		<xs:restriction base="xs:string">
			<xs:maxLength value="255"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="string256">
		<xs:restriction base="xs:string">
			<xs:maxLength value="256"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="string1024">
		<xs:restriction base="xs:string">
			<xs:maxLength value="1024"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="alphanumeric">
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9A-Za-z]*"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="alnum10">
		<xs:restriction base="alphanumeric">
			<xs:maxLength value="10"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="alnum15">
		<xs:restriction base="alphanumeric">
			<xs:maxLength value="15"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="alnum30">
		<xs:restriction base="alphanumeric">
			<xs:maxLength value="30"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="alnum200">
		<xs:restriction base="alphanumeric">
			<xs:maxLength value="200"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="alnum200Req">
		<xs:restriction base="alphanumeric">
			<xs:minLength value="1"/>
			<xs:maxLength value="200"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="departmentNumber">
		<xs:restriction base="xs:string">
			<xs:maxLength value="15"/>
			<xs:pattern value="[0-9A-Za-z\- ]*"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="yesNo">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Y"/>
			<xs:enumeration value="N"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="socialSecurityNumber">
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9]{9}"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="employmentStatus">
		<xs:restriction base="xs:string">
			<xs:enumeration value="A"/>
			<xs:enumeration value="D"/>
			<xs:enumeration value="E"/>
			<xs:enumeration value="O"/>
			<xs:enumeration value="L"/>
			<xs:enumeration value="T"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="employeeType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="w2"/>
			<xs:enumeration value="1099"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="nameSuffix">
		<xs:restriction base="xs:string">
			<xs:enumeration value="JR"/>
			<xs:enumeration value="SR"/>
			<xs:enumeration value="II"/>
			<xs:enumeration value="III"/>
			<xs:enumeration value="IV"/>
			<xs:enumeration value="V"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="state">
		<xs:restriction base="xs:string">
			<xs:enumeration value="AL"/>
			<xs:enumeration value="AK"/>
			<xs:enumeration value="AZ"/>
			<xs:enumeration value="AR"/>
			<xs:enumeration value="CA"/>
			<xs:enumeration value="CO"/>
			<xs:enumeration value="CT"/>
			<xs:enumeration value="DE"/>
			<xs:enumeration value="DC"/>
			<xs:enumeration value="FL"/>
			<xs:enumeration value="GA"/>
			<xs:enumeration value="HI"/>
			<xs:enumeration value="ID"/>
			<xs:enumeration value="IL"/>
			<xs:enumeration value="IN"/>
			<xs:enumeration value="IA"/>
			<xs:enumeration value="KS"/>
			<xs:enumeration value="KY"/>
			<xs:enumeration value="LA"/>
			<xs:enumeration value="ME"/>
			<xs:enumeration value="MD"/>
			<xs:enumeration value="MA"/>
			<xs:enumeration value="MI"/>
			<xs:enumeration value="MN"/>
			<xs:enumeration value="MS"/>
			<xs:enumeration value="MO"/>
			<xs:enumeration value="MT"/>
			<xs:enumeration value="NE"/>
			<xs:enumeration value="NV"/>
			<xs:enumeration value="NH"/>
			<xs:enumeration value="NJ"/>
			<xs:enumeration value="NM"/>
			<xs:enumeration value="NY"/>
			<xs:enumeration value="NC"/>
			<xs:enumeration value="ND"/>
			<xs:enumeration value="OH"/>
			<xs:enumeration value="OK"/>
			<xs:enumeration value="OR"/>
			<xs:enumeration value="PA"/>
			<xs:enumeration value="RI"/>
			<xs:enumeration value="SC"/>
			<xs:enumeration value="SD"/>
			<xs:enumeration value="TN"/>
			<xs:enumeration value="TX"/>
			<xs:enumeration value="UT"/>
			<xs:enumeration value="VT"/>
			<xs:enumeration value="VA"/>
			<xs:enumeration value="WA"/>
			<xs:enumeration value="WV"/>
			<xs:enumeration value="WI"/>
			<xs:enumeration value="WY"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="zipCode">
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9]{5}"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="phoneNumber">
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9]*"/>
			<xs:maxLength value="11"/>
			<xs:minLength value="10"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="phoneExtension">
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9]*"/>
			<xs:maxLength value="10"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="nonNegativeInteger2">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base='xs:string'>
				<xs:length value="0"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
                <xs:restriction base="xs:nonNegativeInteger">
                    <xs:minInclusive value="0"/>
                    <xs:maxInclusive value="99"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:union>
	</xs:simpleType>

    <xs:simpleType name="nonNegativeInteger4">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base='xs:string'>
				<xs:length value="0"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
                <xs:restriction base="xs:nonNegativeInteger">
                    <xs:minInclusive value="0"/>
                    <xs:maxInclusive value="32767"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:union>
	</xs:simpleType>

	<xs:simpleType name="nullOrDecimal">
		<xs:union> 
			<xs:simpleType>
				<xs:restriction base='xs:string'>
				<xs:length value="0"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base='xs:decimal'>
				</xs:restriction>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>

	<xs:simpleType name="fedtaxTotalDependents">
		<xs:restriction base="xs:nonNegativeInteger">
			<!-- match any number 3+ digits or 0 or 25-29 or 30-99 -->
			<xs:pattern value="[0-9]{3,}|[0]|2[5-9]|[3-9][0-9]"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="fedTaxStatus">
		<xs:restriction base="xs:string">
			<xs:enumeration value="S"/>
			<xs:enumeration value="M"/>
			<xs:enumeration value="H"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="fedTaxType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="T"/>
			<xs:enumeration value="B"/>
			<xs:enumeration value="P"/>
			<xs:enumeration value="D"/>
			<xs:enumeration value="N"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="stateTaxStatus">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base='xs:string'>
				<xs:length value="0"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="1"/>
			<xs:maxInclusive value="10"/>
		</xs:restriction>
	</xs:simpleType>
		</xs:union>
		
	</xs:simpleType>

	<xs:simpleType name="stateTaxType">
	<xs:union>
			<xs:simpleType>
				<xs:restriction base='xs:string'>
				<xs:length value="0"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
		<xs:restriction base="xs:string">
			<xs:enumeration value="T"/>
			<xs:enumeration value="B"/>
			<xs:enumeration value="P"/>
			<xs:enumeration value="D"/>
			<xs:enumeration value="N"/>
		</xs:restriction>
	</xs:simpleType>
		</xs:union>
		
	</xs:simpleType>

	<xs:simpleType name="wageType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="H"/>
			<xs:enumeration value="S"/>
			<xs:enumeration value="N"/>
			<xs:enumeration value="C"/>
			<xs:enumeration value="T"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="status401k">
		<xs:restriction base="xs:string">
			<xs:enumeration value="A"/>
			<xs:enumeration value="D"/>
			<xs:enumeration value="T"/>
			<xs:enumeration value="E"/>
			<xs:enumeration value="R"/>
			<xs:enumeration value="I"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="maritalStatus">
		<xs:restriction base="xs:string">
			<xs:enumeration value="S"/>
			<xs:enumeration value="M"/>
			<xs:enumeration value="D"/>
			<xs:enumeration value="W"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="gender">
		<xs:restriction base="xs:string">
			<xs:enumeration value="M"/>
			<xs:enumeration value="F"/>
			<xs:enumeration value="U"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="employmentType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="F"/>
			<xs:enumeration value="P"/>
			<xs:enumeration value="S"/>
			<xs:enumeration value="T"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="eeocEthnicity">
		<xs:restriction base="xs:string">
			<xs:enumeration value="H"/>
			<xs:enumeration value="W"/>
			<xs:enumeration value="B"/>
			<xs:enumeration value="P"/>
			<xs:enumeration value="A"/>
			<xs:enumeration value="I"/>
			<xs:enumeration value="T"/>
			<xs:enumeration value="N"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="eeocCategory">
		<xs:restriction base="xs:string">
			<xs:enumeration value="R"/>
			<xs:enumeration value="M"/>
			<xs:enumeration value="F"/>
			<xs:enumeration value="P"/>
			<xs:enumeration value="T"/>
			<xs:enumeration value="S"/>
			<xs:enumeration value="C"/>
			<xs:enumeration value="W"/>
			<xs:enumeration value="O"/>
			<xs:enumeration value="L"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="accountType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="C"/>
			<xs:enumeration value="S"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="routingNumber">
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9]{9}"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="accountNumber">
		<xs:restriction base="xs:string">
			<xs:pattern value="([0-9\- ])*"/>
			<xs:minLength value="5"/>
			<xs:maxLength value="17"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="payType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="D"/>
			<xs:enumeration value="P"/>
			<xs:enumeration value="R"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:complexType name="employee">
		<xs:sequence>
			<xs:element name="demographics" type="demographics"/>
		</xs:sequence>
		<xs:attribute name="uniqueid" use="required" type="alnum200Req"/>
		<xs:attribute name="dateeffective" use="optional">
			<xs:simpleType>
				<xs:restriction base="xs:dateTime">
					<xs:minExclusive value="1900-01-01T00:00:00"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>

	<xs:complexType name="demographics">
		<xs:all>
			<xs:element name="number" minOccurs="0" maxOccurs="1" type="alnum10"/>
			<xs:element name="ssn" minOccurs="0" maxOccurs="1" type="socialSecurityNumber"/>
			<xs:element name="status" minOccurs="0" maxOccurs="1" type="employmentStatus"/>
			<xs:element name="type" minOccurs="0" maxOccurs="1" type="employeeType"/>
			<xs:element name="first" minOccurs="0" maxOccurs="1" type="string30"/>
			<xs:element name="middle" minOccurs="0" maxOccurs="1" type="string30"/>
			<xs:element name="last" minOccurs="0" maxOccurs="1" type="string30"/>
			<xs:element name="suffix" minOccurs="0" maxOccurs="1" type="nameSuffix"/>
			<xs:element name="address1" minOccurs="0" maxOccurs="1" type="string50"/>
			<xs:element name="address2" minOccurs="0" maxOccurs="1" type="string50"/>
			<xs:element name="city" minOccurs="0" maxOccurs="1" type="string50"/>
			<xs:element name="state" minOccurs="0" maxOccurs="1" type="state"/>
			<xs:element name="zip" minOccurs="0" maxOccurs="1" type="zipCode"/>
			<xs:element name="email" minOccurs="0" maxOccurs="1" type="string50"/>
			<xs:element name="email-personal" minOccurs="0" maxOccurs="1" type="string50"/>
			<xs:element name="hphone" minOccurs="0" maxOccurs="1" type="phoneNumber"/>
			<xs:element name="mphone" minOccurs="0" maxOccurs="1" type="phoneNumber"/>
			<xs:element name="wphone" minOccurs="0" maxOccurs="1" type="phoneNumber"/>
			<xs:element name="extphone" minOccurs="0" maxOccurs="1" type="phoneExtension"/>
			<xs:element name="bdept" minOccurs="0" maxOccurs="1">
				<xs:simpleType>
					<xs:restriction base="departmentNumber">
						<xs:minLength value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="blocation" minOccurs="0" maxOccurs="1">
				<xs:simpleType>
					<xs:restriction base="string30">
						<xs:minLength value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="wccode" minOccurs="0" maxOccurs="1" type="alnum10"/>
			<xs:element name="fedtax-status" minOccurs="0" maxOccurs="1" type="fedTaxStatus"/>
			<xs:element name="fedtax-exemptions" minOccurs="0" maxOccurs="1" type="nonNegativeInteger2"/>
			<xs:element name="fedtax-type" minOccurs="0" maxOccurs="1" type="fedTaxType"/>
			<xs:element name="fedtax-amount" minOccurs="0" maxOccurs="1" type="xs:decimal"/>
			<xs:element name="fedtax-comm" minOccurs="0" maxOccurs="1" type="xs:decimal"/>
			<xs:element name="fedtax-multiple-jobs" minOccurs="0" maxOccurs="1" type="yesNo"/>
			<xs:element name="fedtax-total-dependents" minOccurs="0" maxOccurs="1" type="fedtaxTotalDependents"/>
			<xs:element name="fedtax-other-income" minOccurs="0" maxOccurs="1" type="xs:decimal"/>
			<xs:element name="fedtax-deductions" minOccurs="0" maxOccurs="1" type="xs:decimal"/>
			<xs:element name="statetax-state" minOccurs="0" maxOccurs="1" type="state"/>
			<xs:element name="unemp-state" minOccurs="0" maxOccurs="1" type="state"/>
			<xs:element name="soc-code" minOccurs="0" maxOccurs="1" type="string7"/>
			<xs:element name="statetax-status" minOccurs="0" maxOccurs="1" type="stateTaxStatus" nillable="true"/>
			<xs:element name="statetax-exemptions" minOccurs="0" maxOccurs="1" type="nonNegativeInteger4" nillable="true"/>
			<xs:element name="statetax-dependents" minOccurs="0" maxOccurs="1" type="nonNegativeInteger2" nillable="true"/>
			<xs:element name="statetax-type" minOccurs="0" maxOccurs="1" type="stateTaxType" nillable="true"/>
			<xs:element name="statetax-amount" minOccurs="0" maxOccurs="1" type="nullOrDecimal" nillable="true"/>
			<xs:element name="statetax-comm" minOccurs="0" maxOccurs="1" type="nullOrDecimal" nillable="true"/>
			<xs:element name="paygroup" minOccurs="0" maxOccurs="1" type="string30"/>
			<xs:element name="wagetype" minOccurs="0" maxOccurs="1" type="wageType"/>
			<xs:element name="salary" minOccurs="0" maxOccurs="1" type="xs:decimal"/>
			<xs:element name="birthdate" minOccurs="0" maxOccurs="1">
				<xs:simpleType>
					<xs:restriction base="xs:date">
						<xs:minExclusive value="1900-01-01"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="hiredate" minOccurs="0" maxOccurs="1">
				<xs:simpleType>
					<xs:restriction base="xs:date">
						<xs:minExclusive value="1900-01-01"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="rehiredate" minOccurs="0" maxOccurs="1">
				<xs:simpleType>
					<xs:restriction base="xs:date">
						<xs:minExclusive value="1900-01-01"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="termdate" minOccurs="0" maxOccurs="1">
				<xs:simpleType>
					<xs:restriction base="xs:date">
						<xs:minExclusive value="1900-01-01"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="i9date" minOccurs="0" maxOccurs="1">
				<xs:simpleType>
					<xs:restriction base="xs:date">
						<xs:minExclusive value="1900-01-01"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="paychangedate" minOccurs="0" maxOccurs="1">
				<xs:simpleType>
					<xs:restriction base="xs:date">
						<xs:minExclusive value="1900-01-01"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="lastreviewdate" minOccurs="0" maxOccurs="1">
				<xs:simpleType>
					<xs:restriction base="xs:date">
						<xs:minExclusive value="1900-01-01"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="nextreviewdate" minOccurs="0" maxOccurs="1">
				<xs:simpleType>
					<xs:restriction base="xs:date">
						<xs:minExclusive value="1900-01-01"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="cobrastart" minOccurs="0" maxOccurs="1">
				<xs:simpleType>
					<xs:restriction base="xs:date">
						<xs:minExclusive value="1900-01-01"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="cobraend" minOccurs="0" maxOccurs="1">
				<xs:simpleType>
					<xs:restriction base="xs:date">
						<xs:minExclusive value="1900-01-01"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="leavestart" minOccurs="0" maxOccurs="1">
				<xs:simpleType>
					<xs:restriction base="xs:date">
						<xs:minExclusive value="1900-01-01"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="leaveend" minOccurs="0" maxOccurs="1">
				<xs:simpleType>
					<xs:restriction base="xs:date">
						<xs:minExclusive value="1900-01-01"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="eligdate-401k" minOccurs="0" maxOccurs="1">
				<xs:simpleType>
					<xs:restriction base="xs:date">
						<xs:minExclusive value="1900-01-01"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="partdate-401k" minOccurs="0" maxOccurs="1">
				<xs:simpleType>
					<xs:restriction base="xs:date">
						<xs:minExclusive value="1900-01-01"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="partnum-401k" minOccurs="0" maxOccurs="1" type="alnum10"/>
			<xs:element name="status-401k" minOccurs="0" maxOccurs="1"  type="status401k"/>
			<xs:element name="hce" minOccurs="0" maxOccurs="1" type="yesNo"/>
			<xs:element name="keyemployee" minOccurs="0" maxOccurs="1" type="yesNo"/>
			<xs:element name="familymember" minOccurs="0" maxOccurs="1" type="yesNo"/>
			<xs:element name="maritalstatus" minOccurs="0" maxOccurs="1" type="maritalStatus"/>
			<xs:element name="gender" minOccurs="0" maxOccurs="1" type="gender"/>
			<xs:element name="county_id" minOccurs="0" maxOccurs="1" type="nonNegativeInteger4"/>
			<xs:element name="city_id" minOccurs="0" maxOccurs="1" type="nonNegativeInteger4"/>
			<xs:element name="pa_county_id" minOccurs="0" maxOccurs="1" type="nonNegativeInteger4"/>
			<xs:element name="county_additional" minOccurs="0" maxOccurs="1" type="xs:decimal"/>
			<xs:element name="city_additional" minOccurs="0" maxOccurs="1" type="xs:decimal"/>
			<xs:element name="emptype" minOccurs="0" maxOccurs="1" type="employmentType"/>
			<xs:element name="eligrehire" minOccurs="0" maxOccurs="1" type="yesNo"/>
			<xs:element name="eeo-e" minOccurs="0" maxOccurs="1" type="eeocEthnicity"/>
			<xs:element name="eeo-c" minOccurs="0" maxOccurs="1" type="eeocCategory"/>
			<xs:element name="rates" minOccurs="0" maxOccurs="1" type="rateList"/>
			<xs:element name="incomes" minOccurs="0" maxOccurs="1" type="incomeList"/>
			<xs:element name="deductions" minOccurs="0" maxOccurs="1" type="deductionList"/>
			<xs:element name="accounts" minOccurs="0" maxOccurs="1" type="accountList"/>
			<xs:element name="accruals" minOccurs="0" maxOccurs="1" type="accrualList"/>
			<xs:element name="econtacts" minOccurs="0" maxOccurs="1" type="emergencyContactList"/>
			<xs:element name="customfields" minOccurs="0" maxOccurs="1" type="customFieldList"/>
			<xs:element name="documents" minOccurs="0" maxOccurs="1" type="documentList"/>
			<xs:element name="classification" minOccurs="0" maxOccurs="1" type="string50"/>
			<xs:element name="title" minOccurs="0" maxOccurs="1" type="string255"/>
			<xs:element name="events" minOccurs="0" maxOccurs="1" type="eventList" />
		</xs:all>
	</xs:complexType>

	<xs:complexType name="documentList">
		<xs:sequence>
			<xs:element name="document" type="document" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="document">
		<xs:attribute name="filename" use="required" type="string256"/>
	</xs:complexType>

	<xs:complexType name="employeeList">
		<xs:sequence>
			<xs:element name="employee" type="employee" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="rateList">
		<xs:sequence>
			<xs:element name="rate" type="rate" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="incomeList">
		<xs:sequence>
			<xs:element name="income" type="income" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="deductionList">
		<xs:sequence>
			<xs:element name="deduction" type="deduction" minOccurs="0" maxOccurs="unbounded">
				<xs:unique name="goalAmountExclusivity">
					<xs:annotation>
						<xs:documentation>Ensure that @goalamount and @annualgoal cannot occur simultaneously. Both may be omitted.</xs:documentation>
					</xs:annotation>
					<xs:selector xpath="."/>
					<xs:field xpath="@goalamount|@annualgoal"/>
				</xs:unique>
			</xs:element>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="accountList">
		<xs:sequence>
			<xs:element name="account" type="account" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="accrualList">
		<xs:sequence>
			<xs:element name="accrual" type="accrual" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="emergencyContactList">
		<xs:sequence>
			<xs:element name="ec" type="emergencyContact" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="customFieldList">
		<xs:sequence>
			<xs:element name="field" type="customField" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="rate">
		<xs:attribute name="department" use="required" type="departmentNumber"/>
		<xs:attribute name="rateone" use="required" type="xs:decimal"/>
		<xs:attribute name="ratetwo" use="optional" type="xs:decimal"/>
		<xs:attribute name="ratethree" use="optional" type="xs:decimal"/>
		<xs:attribute name="ratefour" use="optional" type="xs:decimal"/>
		<xs:attribute name="defaultreghours" use="optional" type="xs:decimal"/>
		<xs:attribute name="defaultovthours" use="optional" type="xs:decimal"/>
	</xs:complexType>

	<xs:complexType name="income">
		<xs:attribute name="department" use="required" type="departmentNumber"/>
		<xs:attribute name="description" use="required" type="string25"/>
		<xs:attribute name="amount" use="required" type="xs:decimal"/>
		<xs:attribute name="effstartdate" use="optional">
			<xs:simpleType>
				<xs:restriction base="xs:date">
					<xs:minExclusive value="1900-01-01"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="effenddate" use="optional">
			<xs:simpleType>
				<xs:restriction base="xs:date">
					<xs:minExclusive value="1900-01-01"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>

	<xs:complexType name="deduction">
		<xs:attribute name="description" use="required" type="string25"/>
		<xs:attribute name="amount" use="required" type="xs:decimal"/>
		<xs:attribute name="maxoverride" use="optional" type="xs:decimal"/>
        <xs:attribute name="goalamount" use="optional" type="xs:decimal"/>
		<xs:attribute name="annualgoal" use="optional" type="xs:decimal"/>
		<xs:attribute name="effdate" use="optional">
			<xs:simpleType>
				<xs:restriction base="xs:date">
					<xs:minExclusive value="1900-01-01"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="empamount" use="optional" type="xs:decimal"/>
	</xs:complexType>

	<xs:complexType name="account">
		<xs:attribute name="accounttype" use="required" type="accountType"/>
		<xs:attribute name="routingnum" use="required" type="routingNumber"/>
		<xs:attribute name="accountnum" use="required" type="accountNumber"/>
		<xs:attribute name="paytype" use="required" type="payType"/>
		<xs:attribute name="payamount" use="required" type="xs:decimal"/>
	</xs:complexType>

	<xs:complexType name="accrual">
		<xs:attribute name="accrplan" use="required" type="string25"/>
		<xs:attribute name="hrsavail" use="optional" type="xs:decimal"/>
		<xs:attribute name="hrsbank" use="optional" type="xs:decimal"/>
	</xs:complexType>

	<xs:complexType name="emergencyContact">
		<xs:attribute name="name" use="required" type="string60"/>
		<xs:attribute name="hphone" use="optional" type="phoneNumber"/>
		<xs:attribute name="wphone" use="optional" type="phoneNumber"/>
		<xs:attribute name="mphone" use="optional" type="phoneNumber"/>
		<xs:attribute name="relation" use="optional" type="string100"/>
		<xs:attribute name="notes" use="optional" type="string1024"/>
	</xs:complexType>

	<xs:complexType name="customField">
		<xs:attribute name="field" use="required" type="string50"/>
		<xs:attribute name="value" use="required" type="string200"/>
	</xs:complexType>

	<xs:complexType name="companyInfo">
		<xs:all>
			<xs:element name="departments" type="departmentList" minOccurs="0"/>
		</xs:all>
	</xs:complexType>

	<xs:complexType name="departmentList">
		<xs:sequence>
			<xs:element name="department" type="department" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="department">
		<xs:attribute name="number" use="required" type="departmentNumber"/>
		<xs:attribute name="description" use="optional" type="string30"/>
		<xs:attribute name="inactivate" use="optional" type="yesNo"/>
	</xs:complexType>

	<xs:simpleType name="eventStatus">
		<xs:restriction base="xs:string">
			<xs:enumeration value="O"/>
			<xs:enumeration value="C"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="eventCategory">
		<xs:restriction base="xs:string">
			<xs:enumeration value="disc"/>
			<xs:enumeration value="emp"/>
			<xs:enumeration value="leave"/>
			<xs:enumeration value="cert"/>
			<xs:enumeration value="pay"/>
			<xs:enumeration value="pos"/>
			<xs:enumeration value="train"/>
			<xs:enumeration value="review"/>
			<xs:enumeration value="goal"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:complexType name="eventList">
		<xs:sequence>
			<xs:element name="event" type="event" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	
	<xs:complexType name="event">
		<xs:all>
			<xs:element name="description" type="string100" minOccurs="1" maxOccurs="1" />
			<xs:element name="notes" type="string250" minOccurs="1" maxOccurs="1" />
		</xs:all>
		<xs:attribute name="event_id" use="required" type="string50" />
		<xs:attribute name="category" use="required" type="eventCategory" />
		<xs:attribute name="type" use="required" type="string100" />
		<xs:attribute name="status" use="required" type="eventStatus" />
		<xs:attribute name="event_date" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:date">
					<xs:minExclusive value="1900-01-01" />
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="followup_date" use="optional">
			<xs:simpleType>
				<xs:restriction base="xs:date">
					<xs:minExclusive value="1900-01-01" />
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>

</xs:schema>
