<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:c="http://www.ieee.org/ATML/2005/08/Common" xmlns="http://www.ieee.org/ATML/2005/01/TestResults" targetNamespace="http://www.ieee.org/ATML/2005/01/TestResults" elementFormDefault="qualified" attributeFormDefault="qualified" version="0.12">
	<xs:import namespace="http://www.ieee.org/ATML/2005/08/Common" schemaLocation="Common.xsd"/>
	<xs:element name="TestResults">
		<xs:annotation>
			<xs:documentation>Root element for this schema.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:all>
				<xs:element name="UUT" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Minimal identification data for the subject UUT.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:complexContent>
							<xs:extension base="c:HardwareInstance">
								<xs:attribute name="uutType" type="c:NonBlankString" use="optional"/>
							</xs:extension>
						</xs:complexContent>
					</xs:complexType>
				</xs:element>
				<xs:element name="ResultSet" type="TestGroup">
					<xs:annotation>
						<xs:documentation>Parent element to permit heirarchical structure of TestGroups.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="TestStation" type="c:HardwareInstance" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Reference information to identify the specific test station on which a test was run.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="TestProgram" type="c:SoftwareInstance" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Reference information to locate a specific software element used in a test.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="TestDescription" type="c:Document" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Reference information to enable linkage to a specific TestDescription instance document.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="WorkOrder" minOccurs="0">
					<xs:annotation>
						<xs:documentation>The reference ID of a Work Order related to this test.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence minOccurs="0">
							<xs:element name="WorkItem" type="c:TagValue" minOccurs="0" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>Optional holder for specific Work Item(s) from the Work Order.</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:sequence>
						<xs:attribute name="ID" type="xs:string" use="required"/>
					</xs:complexType>
				</xs:element>
				<xs:element name="PreTestRepairs" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Identifies repairs made prior to a test or test run. Used in the diagnostic process.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Repair" type="Repair" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>Identify the repair.</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Environmental" minOccurs="0">
					<xs:annotation>
						<xs:documentation>External environmental data pertinent to the test instance.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Data" type="c:TagValue" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>Extension of ValueType with an added name attribute to identify the particular environmental parameter.</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="References" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Collector element. If used, at least one Reference child element must appear in the instance document.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Reference" type="c:Document" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>Miscellaneous reference information relevant to the overall set of Tests in an instance document.</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Operator" type="c:Operator" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Placeholder to identify the specific operator of the ATE when the Test Results instance document was created.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Indictments" minOccurs="0">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Indictment" type="c:ItemInstance" maxOccurs="unbounded"/>
							<xs:element name="OtherData" type="c:TagValue" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Extension" type="c:Extension" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Element provided to permit extensibility of the schema.</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:all>
			<xs:attribute name="classification" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="UNCLASSIFIED"/>
						<xs:enumeration value="CLASSIFIED"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="RepairCode">
		<xs:annotation>
			<xs:documentation>Enumeration of repair codes.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="Repair"/>
			<xs:enumeration value="Replace"/>
			<xs:enumeration value="Cannibalize"/>
			<xs:enumeration value="Reseat"/>
			<xs:enumeration value="UserDefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="OutcomeValue">
		<xs:annotation>
			<xs:documentation>Simple enumeration to specify test outcomes Passed/Failed/Aborted.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="Passed"/>
			<xs:enumeration value="Failed"/>
			<xs:enumeration value="Aborted"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="Repair">
		<xs:annotation>
			<xs:documentation>Identify the type of repair conducted.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Component" type="c:ItemInstance" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Identify the repaired component.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="repairCode" type="RepairCode" use="required"/>
		<xs:attribute name="repairName" type="xs:string" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Outcome">
		<xs:attribute name="value" type="OutcomeValue" use="required"/>
		<xs:attribute name="qualifier" type="xs:string" use="optional">
			<xs:annotation>
				<xs:documentation>The qualifier attribute may be used to expand upon the state indicated in the value attribute.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="Event">
		<xs:annotation>
			<xs:documentation>Provides for the capture of non-result data or system/operator messages generated during a test.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Message" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="Data" minOccurs="0" maxOccurs="unbounded">
				<xs:complexType>
					<xs:complexContent>
						<xs:extension base="c:Value">
							<xs:attribute name="name" type="c:NonBlankString" use="required"/>
						</xs:extension>
					</xs:complexContent>
				</xs:complexType>
			</xs:element>
			<xs:element name="Reference" type="c:Document" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="ID" type="xs:string" use="required"/>
		<xs:attribute name="name" type="xs:string" use="optional"/>
		<xs:attribute name="severity" use="optional">
			<xs:annotation>
				<xs:documentation>0 - lowest severity; information only 4 - highest severity; critical event</xs:documentation>
			</xs:annotation>
			<xs:simpleType>
				<xs:restriction base="xs:int">
					<xs:enumeration value="0"/>
					<xs:enumeration value="1"/>
					<xs:enumeration value="2"/>
					<xs:enumeration value="3"/>
					<xs:enumeration value="4"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="source" type="xs:string" use="required"/>
		<xs:attribute name="timeStamp" type="xs:dateTime" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Parameter">
		<xs:annotation>
			<xs:documentation>Provides for capture of test input parameters using a ValueType.</xs:documentation>
		</xs:annotation>
		<xs:sequence minOccurs="0">
			<xs:element name="Description" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="Data" type="c:Value" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="Reference" type="c:Document" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="ID" type="xs:string" use="optional"/>
		<xs:attribute name="name" type="xs:string" use="optional"/>
		<xs:attribute name="timeStamp" type="xs:dateTime" use="optional"/>
	</xs:complexType>
	<xs:complexType name="TestResult">
		<xs:annotation>
			<xs:documentation>Element sequence to capture test result data, comparison limits, components indicted in a failure and any data transforms required to evaluate raw capture data.</xs:documentation>
		</xs:annotation>
		<xs:all>
			<xs:element name="Outcome" type="Outcome" minOccurs="0"/>
			<xs:element name="Description" type="xs:string" minOccurs="0"/>
			<xs:element name="TestData" type="c:Value" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Captured data from the test equipment. This may be either raw or post-processed data. It is presumed that a Transform will be provided for raw data.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Transform" type="xs:string" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Any transform that might be needed to produce meaningful results from RawData.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Indictments" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Collector element. If used, at least one child Indictment must appear.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Indictment" type="c:ItemInstance" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Optional element to capture data about a component (item) suspected of contributing to an out-of-limit test result. </xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="TestLimits" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Collector element. If used, at least one child Limits element must appear.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Limits" type="c:Limit" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Limits against which TestData is compared within a single TestResult to arrive at an Outcome.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="Extension" type="c:Extension" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Provided to permit schema extensibility.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:all>
		<xs:attribute name="ID" type="xs:string" use="optional"/>
		<xs:attribute name="name" type="xs:string" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Test">
		<xs:annotation>
			<xs:documentation>Elements of type Test are used to capture all activity within a test program. This will include any initialization, calibration, tests, post-test events, etc. The ID attribute of this element does not necessarily indicate the order of tests. It is assumed that the order of the tests within the file is significant.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Outcome" type="Outcome" minOccurs="0">
				<xs:annotation>
					<xs:documentation>This Outcome applies to any/all TestResult element(s) sharing a common Test parent with this element.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Description" type="xs:string" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Optional descriptive information for the test.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Events" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Collector element. If used, at least one child Event must appear.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Event" type="Event" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Element to capture any non-result event occuring during a test(e.g., system or operator messages).</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="Calibration" type="Parameter" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Optional calibration information for this test.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Parameters" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Collector element. If used, at least one child Parameter must appear.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Parameter" type="Parameter" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Optional storage for test parameters, as required.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="TestLimits" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Limits that apply only to the immediate parent Test element.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Limits" type="c:Limit" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Limits against which TestData is compared to arrive at a testOutcome.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="TestResult" type="TestResult" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="Extension" type="c:Extension" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Provided to permit schema extensibility.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="ID" type="xs:string" use="required"/>
		<xs:attribute name="classification" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="UNCLASSIFIED"/>
					<xs:enumeration value="CLASSIFIED"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="name" type="xs:string" use="optional"/>
		<xs:attribute name="type" type="xs:string" use="optional"/>
		<xs:attribute name="cost" type="xs:double" use="optional"/>
		<xs:attribute name="simulated" type="xs:boolean" use="optional"/>
		<xs:attribute name="startDateTime" type="xs:dateTime" use="optional"/>
		<xs:attribute name="endDateTime" type="xs:dateTime" use="optional"/>
	</xs:complexType>
	<xs:complexType name="TestGroup">
		<xs:annotation>
			<xs:documentation>Heirarchical group element to permit more structured format of test data.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Outcome" type="Outcome" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Outcome (qualitative result) which applies to Tests within the Test Group in toto.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Description" type="xs:string" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Textual description for the Test Group.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Events" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Collector element. If used, at least one child Event must appear.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Event" type="Event" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Any non-result event which is relevant to an entire Test Group. Events may be system or operator messages.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="Parameters" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Collector element. If used, at least one child Parameter must appear.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Parameter" type="Parameter" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Test parameters that apply to all tests within a Test Group. These test may not be identical tests. </xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="TestLimits" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Limits that apply to all Tests within the Test Group.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Limit" type="c:Limit" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Limits against which TestData is compared to arrive at a testOutcome.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:choice maxOccurs="unbounded">
				<xs:element name="Test">
					<xs:complexType>
						<xs:complexContent>
							<xs:extension base="Test"/>
						</xs:complexContent>
					</xs:complexType>
				</xs:element>
				<xs:element name="TestGroup" type="TestGroup"/>
				<xs:element name="TestGroupAction">
					<xs:annotation>
						<xs:documentation>Provides for the inclusion of actions occuring during the conduct of a Test that are not actual Results.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="ActionOutcome" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Only "Done" and "Aborted" are permitted for the 'value' attribute. The 'qualifier' attribute may be used to further enhance 'value'.</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:attribute name="value" use="required">
										<xs:simpleType>
											<xs:restriction base="xs:string">
												<xs:enumeration value="Done"/>
												<xs:enumeration value="Aborted"/>
											</xs:restriction>
										</xs:simpleType>
									</xs:attribute>
									<xs:attribute name="qualifier" type="c:NonBlankString" use="optional"/>
								</xs:complexType>
							</xs:element>
							<xs:element name="Description" type="xs:string" minOccurs="0"/>
							<xs:element name="Events" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Collector element. If used, at least one child Event must appear.</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:sequence>
										<xs:element name="Event" type="Event" maxOccurs="unbounded">
											<xs:annotation>
												<xs:documentation>Used to capture any event related to the non-test action. Events may be system or operator messages.</xs:documentation>
											</xs:annotation>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="Parameters" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Collector element. If used, at least one child Parameter must appear.</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:sequence>
										<xs:element name="Parameter" type="Parameter" maxOccurs="unbounded">
											<xs:annotation>
												<xs:documentation>Optional storage for parameters, as required.</xs:documentation>
											</xs:annotation>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="ActionData" type="c:Value" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Container for any data related to the parent NonTestAction.</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="Extension" type="c:Extension" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Provided to permit schema extensibility.</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:sequence>
						<xs:attribute name="ID" type="xs:string" use="required"/>
						<xs:attribute name="name" type="xs:string" use="optional"/>
						<xs:attribute name="type" type="xs:string" use="optional"/>
						<xs:attribute name="cost" type="xs:double" use="optional"/>
						<xs:attribute name="simulated" type="xs:boolean" use="optional"/>
						<xs:attribute name="startDateTime" type="xs:dateTime" use="optional"/>
						<xs:attribute name="endDateTime" type="xs:dateTime" use="optional"/>
					</xs:complexType>
				</xs:element>
			</xs:choice>
			<xs:element name="Extension" type="c:Extension" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="ID" type="xs:string" use="required"/>
		<xs:attribute name="name" type="xs:string" use="optional"/>
		<xs:attribute name="entryPoint" type="xs:boolean" use="optional" default="false"/>
		<xs:attribute name="simulated" type="xs:boolean" use="optional" default="false"/>
		<xs:attribute name="startDateTime" type="xs:dateTime" use="optional"/>
		<xs:attribute name="endDateTime" type="xs:dateTime" use="optional"/>
	</xs:complexType>
</xs:schema>

