<?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="unqualified" version="0.13">
	<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" type="c:HardwareInstance" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Optional element; if used, at least one of the child elements MUST appear.</xs:documentation>
					</xs:annotation>
				</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="TestProgram" type="c:Document" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Provides for the identification of a specific Test Program used for the subject Test Results. This Test Program may be referenced using a URL and/or some extended content specific to the use case.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="TestStation" type="c:HardwareInstance" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Provides for the identification of a specific Test Station used for the subject Test Results.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="TestDescription" type="c:SoftwareInstance" 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" type="c:EnvironmentalElements" minOccurs="0">
					<xs:annotation>
						<xs:documentation>External environmental data pertinent to the test instance.</xs:documentation>
					</xs:annotation>
				</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" type="c:ClassificationLevel" use="required"/>
			<xs:attributeGroup ref="c:DocumentRootAttributes"/>
		</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" type="c:ClassificationLevel" 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="entryPoint" type="xs:boolean" 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:complexContent>
			<xs:extension base="Test">
				<xs:choice maxOccurs="unbounded">
					<xs:element name="Test" type="Test"/>
					<xs:element name="TestGroup" type="TestGroup"/>
					<xs:element name="SessionAction">
						<xs:annotation>
							<xs:documentation>Provides for the inclusion of actions occuring during the conduct of a test session 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:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:schema>

