<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2006 rel. 3 sp2 (http://www.altova.com) by Ronald Taylor (STS) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:hc="http://www.ieee.org/ATML/2007/HardwareCommon" xmlns:c="http://www.ieee.org/ATML/2007/Common" xmlns="http://www.ieee.org/ATML/2007/02/TestEquipmentInstance" targetNamespace="http://www.ieee.org/ATML/2007/02/TestEquipmentInstance" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.9">
	<xs:import namespace="http://www.ieee.org/ATML/2007/Common" schemaLocation="Common.xsd"/>
	<xs:import namespace="http://www.ieee.org/ATML/2007/HardwareCommon" schemaLocation="HardwareCommon.xsd"/>
	<xs:complexType name="Specifications">
		<xs:sequence>
			<xs:element name="Conditions" type="SpecificationConditions" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Conditions under which the specifications are measured.  These conditions apply to all specifications.  Each individual specification can add additional conditions, or override/replace the any of these conditions.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Certifications" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Specifies traceability information for all specs</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Certification" type="c:NonBlankString" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:choice maxOccurs="unbounded">
				<xs:element name="Specification" type="Specification"/>
				<xs:element name="Group">
					<xs:annotation>
						<xs:documentation>A grouping of specifications that share a set of conditions.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Conditions" type="SpecificationConditions" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Conditions under which the grouped specifications are measured.  Each individual specification can add additional conditions, or override/replace any of these conditions.</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="Specification" type="Specification" maxOccurs="unbounded"/>
						</xs:sequence>
						<xs:attribute name="name" type="xs:string"/>
					</xs:complexType>
				</xs:element>
			</xs:choice>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Specification" abstract="true">
		<xs:sequence>
			<xs:element name="Description" type="c:NonBlankString">
				<xs:annotation>
					<xs:documentation>A short (one or two sentence) textual description of the specification</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Definition">
				<xs:complexType>
					<xs:choice>
						<xs:element name="Text" type="c:NonBlankString">
							<xs:annotation>
								<xs:documentation>A rigorous (mathematical) description of how the specification is defined and measured</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="Document" type="c:Document"/>
					</xs:choice>
				</xs:complexType>
			</xs:element>
			<xs:element name="Conditions" type="SpecificationConditions" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Conditions under which this specification is measured. </xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Limits" type="c:Limit" minOccurs="0">
				<xs:annotation>
					<xs:documentation>The limits for the  specification.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Graph" minOccurs="0">
				<xs:complexType>
					<xs:choice>
						<xs:element name="GraphData" type="xs:base64Binary" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Supplies graphical data for specifications that vary with other parameters.  Some specs are only available in graphical format.  Supplying a bitmap of the graph is one way to satisfy this requirement; the other is to ask the vendor to include all the data, but that would lose important annotations from the graph itself.</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="URL" type="c:NonBlankURI"/>
					</xs:choice>
				</xs:complexType>
			</xs:element>
			<xs:element name="SupplementalInformation" type="xs:string" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Any additional information that is necessary to clarify the specification.  This includes information that is contained in footnotes of the datasheet</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="RequiredOptions" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Instrument options that are required for this spec to be valid</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Option" type="c:NonBlankString" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="ExclusiveOptions" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Instrument options that make this spec invalid</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Option" type="c:NonBlankString" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="name" type="c:NonBlankString" use="required"/>
	</xs:complexType>
	<xs:complexType name="SpecificationConditions">
		<xs:sequence>
			<xs:element name="Condition" type="c:NonBlankString" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="TestEquipmentInstanceType">
		<xs:annotation>
			<xs:documentation>TestEquipment Item Instance Type</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="TestEquipmentInstance">
				<xs:complexType>
					<xs:complexContent>
						<xs:extension base="c:HardwareInstance">
							<xs:sequence>
								<xs:element name="Layout" minOccurs="0">
									<xs:annotation>
										<xs:documentation>List of location and address of instruments.</xs:documentation>
									</xs:annotation>
									<xs:complexType>
										<xs:sequence>
											<xs:element name="Component" maxOccurs="unbounded">
												<xs:complexType>
													<xs:sequence>
														<xs:element name="Name" type="c:NonBlankString" minOccurs="0"/>
														<xs:element name="PhysicalLocation" type="c:NonBlankString" minOccurs="0">
															<xs:annotation>
																<xs:documentation>Where the component is located physically (reference designator).</xs:documentation>
															</xs:annotation>
														</xs:element>
														<xs:element name="Address" type="c:NonBlankString" minOccurs="0">
															<xs:annotation>
																<xs:documentation>The address used to communicate with the component.</xs:documentation>
															</xs:annotation>
														</xs:element>
													</xs:sequence>
													<xs:attribute name="componentID" type="c:NonBlankString"/>
												</xs:complexType>
											</xs:element>
										</xs:sequence>
									</xs:complexType>
								</xs:element>
								<xs:element name="Controller" minOccurs="0">
									<xs:annotation>
										<xs:documentation>The Station or Test Adapters  controller.</xs:documentation>
									</xs:annotation>
									<xs:complexType>
										<xs:complexContent>
											<xs:extension base="c:ItemDescription">
												<xs:sequence>
													<xs:element name="OperatingSystems">
														<xs:annotation>
															<xs:documentation>Installed operating systems.</xs:documentation>
														</xs:annotation>
														<xs:complexType>
															<xs:sequence>
																<xs:element name="OperatingSystem" maxOccurs="unbounded">
																	<xs:complexType>
																		<xs:complexContent>
																			<xs:extension base="c:SoftwareInstance">
																				<xs:sequence>
																					<xs:element name="OperatingSystemUpdate" type="c:NonBlankString" minOccurs="0" maxOccurs="unbounded"/>
																				</xs:sequence>
																			</xs:extension>
																		</xs:complexContent>
																	</xs:complexType>
																</xs:element>
															</xs:sequence>
														</xs:complexType>
													</xs:element>
													<xs:element name="Video" type="c:NonBlankString" minOccurs="0" maxOccurs="unbounded">
														<xs:annotation>
															<xs:documentation>List of available video capabilities.</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="Audio" type="c:NonBlankString" minOccurs="0" maxOccurs="unbounded">
														<xs:annotation>
															<xs:documentation>List of available audio capabilities.</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="Processor">
														<xs:annotation>
															<xs:documentation>Processor information.</xs:documentation>
														</xs:annotation>
														<xs:complexType>
															<xs:sequence>
																<xs:element name="Architecture" type="c:NonBlankString" minOccurs="0">
																	<xs:annotation>
																		<xs:documentation>x86, PPC, SPARC, etc. </xs:documentation>
																	</xs:annotation>
																</xs:element>
																<xs:element name="Type" type="c:NonBlankString" minOccurs="0">
																	<xs:annotation>
																		<xs:documentation>Pentium M, Power PC, etc.</xs:documentation>
																	</xs:annotation>
																</xs:element>
																<xs:element name="Speed" type="c:double">
																	<xs:annotation>
																		<xs:documentation>Clock speed.</xs:documentation>
																	</xs:annotation>
																</xs:element>
																<xs:element name="Quantity" type="c:integer"/>
															</xs:sequence>
														</xs:complexType>
													</xs:element>
													<xs:element name="Peripherals" minOccurs="0">
														<xs:annotation>
															<xs:documentation>List of available system peripherals.</xs:documentation>
														</xs:annotation>
														<xs:complexType>
															<xs:sequence>
																<xs:element name="Peripheral" type="c:ItemDescription" minOccurs="0" maxOccurs="unbounded"/>
															</xs:sequence>
														</xs:complexType>
													</xs:element>
													<xs:element name="InstalledSoftware" minOccurs="0">
														<xs:annotation>
															<xs:documentation>List of installed software,</xs:documentation>
														</xs:annotation>
														<xs:complexType>
															<xs:sequence>
																<xs:element name="Software" maxOccurs="unbounded">
																	<xs:complexType>
																		<xs:complexContent>
																			<xs:extension base="c:SoftwareInstance">
																				<xs:attribute name="sourceType" use="required">
																					<xs:simpleType>
																						<xs:restriction base="xs:string">
																							<xs:enumeration value="Cots"/>
																							<xs:enumeration value="Custom"/>
																						</xs:restriction>
																					</xs:simpleType>
																				</xs:attribute>
																			</xs:extension>
																		</xs:complexContent>
																	</xs:complexType>
																</xs:element>
															</xs:sequence>
														</xs:complexType>
													</xs:element>
													<xs:element name="PhysicalMemory" type="c:double"/>
													<xs:element name="Storage">
														<xs:complexType>
															<xs:sequence>
																<xs:element name="Drive" maxOccurs="unbounded">
																	<xs:complexType>
																		<xs:sequence>
																			<xs:element name="Size" type="c:double"/>
																		</xs:sequence>
																		<xs:attribute name="name"/>
																		<xs:attribute name="bootDrive" type="xs:boolean"/>
																	</xs:complexType>
																</xs:element>
															</xs:sequence>
														</xs:complexType>
													</xs:element>
												</xs:sequence>
											</xs:extension>
										</xs:complexContent>
									</xs:complexType>
								</xs:element>
								<xs:element name="Software" minOccurs="0">
									<xs:annotation>
										<xs:documentation>A list of software associated with this test station or test adapter, in addition to controller software (i.e. Self-Test, Cal)</xs:documentation>
									</xs:annotation>
									<xs:complexType>
										<xs:sequence>
											<xs:element name="SoftwareItem" type="c:SoftwareInstance" maxOccurs="unbounded"/>
										</xs:sequence>
									</xs:complexType>
								</xs:element>
								<xs:element name="Paths" minOccurs="0">
									<xs:annotation>
										<xs:documentation>Signal paths through test station or test adapter. The path could consist of wiring and switching.</xs:documentation>
									</xs:annotation>
									<xs:complexType>
										<xs:sequence>
											<xs:element name="Path" maxOccurs="unbounded">
												<xs:complexType>
													<xs:sequence>
														<xs:element name="PathNodes" minOccurs="2" maxOccurs="2">
															<xs:annotation>
																<xs:documentation>Begin and end nodes. Could be nodes associated with one section of wire or the begin and end nodes of a path composed of multiple wires and/or switches.</xs:documentation>
															</xs:annotation>
															<xs:complexType>
																<xs:sequence>
																	<xs:element name="Path">
																		<xs:annotation>
																			<xs:documentation>XPath path identifying the node.</xs:documentation>
																		</xs:annotation>
																		<xs:complexType>
																			<xs:simpleContent>
																				<xs:extension base="c:NonBlankString">
																					<xs:attribute name="documentId" type="c:Uuid">
																						<xs:annotation>
																							<xs:documentation>ID of the document in which the node is defined.  If not speciifed, the node is defined in the same document.</xs:documentation>
																						</xs:annotation>
																					</xs:attribute>
																				</xs:extension>
																			</xs:simpleContent>
																		</xs:complexType>
																	</xs:element>
																</xs:sequence>
																<xs:attribute name="Name" type="c:NonBlankString"/>
																<xs:attribute name="Description" type="c:NonBlankString"/>
															</xs:complexType>
														</xs:element>
														<xs:sequence minOccurs="0">
															<xs:element name="LossValues" minOccurs="0" maxOccurs="unbounded">
																<xs:annotation>
																	<xs:documentation>The signal losses associated with this path.</xs:documentation>
																</xs:annotation>
																<xs:complexType>
																	<xs:sequence>
																		<xs:element name="Loss" type="c:double">
																			<xs:annotation>
																				<xs:documentation>Signal loss through this path at specified frequency.</xs:documentation>
																			</xs:annotation>
																		</xs:element>
																		<xs:element name="Frequency" type="c:Limit" minOccurs="0">
																			<xs:annotation>
																				<xs:documentation>Frequency range associated with this loss.</xs:documentation>
																			</xs:annotation>
																		</xs:element>
																	</xs:sequence>
																</xs:complexType>
															</xs:element>
															<xs:element name="SignalDelay" type="c:double" minOccurs="0">
																<xs:annotation>
																	<xs:documentation>Delay time of signal through this path (electrical length)</xs:documentation>
																</xs:annotation>
															</xs:element>
															<xs:element name="VSWRValues" minOccurs="0" maxOccurs="unbounded">
																<xs:annotation>
																	<xs:documentation>Voltage Standing Wave Ratio (VSWR) associated with this path.</xs:documentation>
																</xs:annotation>
																<xs:complexType>
																	<xs:sequence>
																		<xs:element name="VSWR" type="c:Limit">
																			<xs:annotation>
																				<xs:documentation>VSWR for path.</xs:documentation>
																			</xs:annotation>
																		</xs:element>
																		<xs:element name="Frequency" type="c:Limit" minOccurs="0">
																			<xs:annotation>
																				<xs:documentation>Frequency range associated with this VSWR.</xs:documentation>
																			</xs:annotation>
																		</xs:element>
																	</xs:sequence>
																</xs:complexType>
															</xs:element>
															<xs:element name="Extension" type="c:Extension" minOccurs="0"/>
															<xs:element name="SParameters" minOccurs="0" maxOccurs="unbounded">
																<xs:annotation>
																	<xs:documentation>S-parameters associated with this path.</xs:documentation>
																</xs:annotation>
																<xs:complexType>
																	<xs:sequence>
																		<xs:element name="InputPort" type="c:PortType"/>
																		<xs:element name="OutputPort" type="c:PortType"/>
																		<xs:element name="Magnitude" type="c:double"/>
																		<xs:element name="PhaseAngle" type="c:double" minOccurs="0"/>
																		<xs:element name="Frequency" type="c:double" minOccurs="0"/>
																	</xs:sequence>
																</xs:complexType>
															</xs:element>
															<xs:element name="ReturnLoss" type="c:double" minOccurs="0"/>
														</xs:sequence>
													</xs:sequence>
													<xs:attribute name="name" type="c:NonBlankString"/>
												</xs:complexType>
											</xs:element>
										</xs:sequence>
									</xs:complexType>
								</xs:element>
								<xs:element name="Capabilities" type="hc:Capabilities" minOccurs="0"/>
								<xs:element name="SelfTestRuns" minOccurs="0">
									<xs:annotation>
										<xs:documentation>Self test last run ETE on Test Station or Test Adapter.</xs:documentation>
									</xs:annotation>
									<xs:complexType>
										<xs:sequence maxOccurs="unbounded">
											<xs:element name="SelfTestRun" type="xs:dateTime" minOccurs="0">
												<xs:annotation>
													<xs:documentation>Date self test last run ETE on Test Station or Test Adapter.</xs:documentation>
												</xs:annotation>
											</xs:element>
										</xs:sequence>
									</xs:complexType>
								</xs:element>
								<xs:element name="SubsystemCalibration" minOccurs="0">
									<xs:annotation>
										<xs:documentation>Subsystem calibrated (used if separte calibration is done on subsystems)</xs:documentation>
									</xs:annotation>
									<xs:complexType>
										<xs:sequence>
											<xs:element name="SubSystem" maxOccurs="unbounded">
												<xs:annotation>
													<xs:documentation>Subsystem calibrated</xs:documentation>
												</xs:annotation>
												<xs:complexType>
													<xs:sequence>
														<xs:element name="CalibrationDate" type="xs:dateTime">
															<xs:annotation>
																<xs:documentation>Date subsystem last calibrated</xs:documentation>
															</xs:annotation>
														</xs:element>
														<xs:element name="CalFrequency" type="c:Value" minOccurs="0">
															<xs:annotation>
																<xs:documentation>Frequency which calibration is required to be run.</xs:documentation>
															</xs:annotation>
														</xs:element>
													</xs:sequence>
													<xs:attribute name="Name" type="c:NonBlankString" use="required"/>
												</xs:complexType>
											</xs:element>
										</xs:sequence>
									</xs:complexType>
								</xs:element>
								<xs:element name="Configuration" type="c:NonBlankString" minOccurs="0">
									<xs:annotation>
										<xs:documentation>Current station configuration. (i.e RF, Digital, EO)</xs:documentation>
									</xs:annotation>
								</xs:element>
								<xs:element name="Health" type="c:NonBlankString" minOccurs="0">
									<xs:annotation>
										<xs:documentation>Current health of Test Station or Test Adapter.</xs:documentation>
									</xs:annotation>
								</xs:element>
							</xs:sequence>
						</xs:extension>
					</xs:complexContent>
				</xs:complexType>
				<xs:key name="componentKey">
					<xs:selector xpath="Components/Component"/>
					<xs:field xpath="@ID"/>
				</xs:key>
				<xs:keyref name="componentReference" refer="componentKey">
					<xs:selector xpath="Layout/Component"/>
					<xs:field xpath="@componentID"/>
				</xs:keyref>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
</xs:schema>

