<?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:annotation>
					<xs:documentation>Reference information to locate a specific software element used in a test.</xs:documentation>
				</xs:annotation>
				<xs:element name="UUT" type="c:HardwareInstance" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Minimal identification data for the subject UUT.</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="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: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:ItemInstance" 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 components repaired prior to a test or test run. Applies to diagnostics.</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" 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: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:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="References" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Collector element for child(ren) Reference element(s).</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 this file.</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="FailureMode">
		<xs:annotation>
			<xs:documentation>Provides a structure for capture of specific failure information related to an indictment.</xs:documentation>
		</xs:annotation>
		<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:complexType>
	<xs:complexType name="Indictment">
		<xs:complexContent>
			<xs:extension base="c:ItemInstance"/>
		</xs:complexContent>
	</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 minOccurs="0">
			<xs:element name="Message" 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="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. NOTE: there is some thought that this may not be needed/useful.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Indictments" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Indictment" type="Indictment" 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: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="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>If Outcome is not present, this indicates a NoTest outcome. Applies to the overall set of TestResult elements.</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="Event" type="Event" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Optional element to capture any non-result event occuring during a test. Events may be system or operator messages.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Parameters" type="Parameter" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Optional storage for test parameters, as required.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Calibration" type="Parameter" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Optional calibration information for the test instance.</xs:documentation>
				</xs:annotation>
			</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="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="Event" type="Event" minOccurs="0" 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:element name="Parameter" type="Parameter" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Test parameters that apply to a disparate Test Group (e.g. a sequence collected in a TestGroup). </xs:documentation>
				</xs:annotation>
			</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="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: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: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>

