<?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/TestStation" targetNamespace="http://www.ieee.org/ATML/2007/02/TestStation" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.04">
	<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:element name="TestStationDescription">
		<xs:annotation>
			<xs:documentation>This schema defines the information associated with a Test Station.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="hc:HardwareItemDescription">
					<xs:sequence>
						<xs:element name="OtherRequirements" minOccurs="0">
							<xs:annotation>
								<xs:documentation>List of non power facilities requirements</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence minOccurs="0">
									<xs:element name="FacilitiesInterface" type="c:Interface" minOccurs="0">
										<xs:annotation>
											<xs:documentation>Non-power interfaces.</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="FacilityRequirementsDocuments" minOccurs="0">
										<xs:complexType>
											<xs:sequence>
												<xs:element name="FacilitiesRequirementsDocument" type="c:Document" maxOccurs="unbounded"/>
											</xs:sequence>
										</xs:complexType>
									</xs:element>
									<xs:element name="Hydraulic" type="c:NonBlankString" minOccurs="0"/>
									<xs:element name="Pneumatic" type="c:NonBlankString" minOccurs="0"/>
									<xs:element name="Cooling" type="c:NonBlankString" minOccurs="0">
										<xs:annotation>
											<xs:documentation>Cooling requirements.</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="Extension" type="c:Extension" minOccurs="0"/>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
						<xs:element name="StationLayout" minOccurs="0">
							<xs:annotation>
								<xs:documentation>List of location and address of instruments.</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element name="PhysicalLocation" type="c:NonBlankString" minOccurs="0">
										<xs:annotation>
											<xs:documentation>Where the component is located physically.</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:complexType>
						</xs:element>
						<xs:element name="StationController" minOccurs="0">
							<xs:annotation>
								<xs:documentation>The station's main 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 OS(s).</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">
															<xs:annotation>
																<xs:documentation>x86, PPC, SPARC, etc. Probably should be an enum or inherited type.</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, includes station selftest.</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="HardDisk" maxOccurs="unbounded">
															<xs:complexType>
																<xs:sequence>
																	<xs:element name="Size" type="c:double"/>
																</xs:sequence>
																<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="TestStationPaths" minOccurs="0">
							<xs:annotation>
								<xs:documentation>Test Station Paths are signal paths through test station. This could include wiring and switching.</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element name="Path" maxOccurs="unbounded">
										<xs:complexType>
											<xs:complexContent>
												<xs:extension base="Network">
													<xs:sequence>
														<xs:element name="Node" minOccurs="2" maxOccurs="2">
															<xs:annotation>
																<xs:documentation>Begin and end node. This could be one section of wire or the begin and end of a path composed of multiple wires and/or switches.</xs:documentation>
															</xs:annotation>
															<xs:complexType>
																<xs:complexContent>
																	<xs:extension base="NetworkNode">
																		<xs:sequence>
																			<xs:element name="Description" type="c:NonBlankString" minOccurs="0"/>
																			<xs:element name="Extension" type="c:Extension" minOccurs="0"/>
																		</xs:sequence>
																	</xs:extension>
																</xs:complexContent>
															</xs:complexType>
														</xs:element>
														<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>Path loss at specified frequency.</xs:documentation>
																		</xs:annotation>
																	</xs:element>
																	<xs:element name="Frequency" type="c:double" minOccurs="0"/>
																</xs:sequence>
															</xs:complexType>
														</xs:element>
														<xs:element name="Extension" type="c:Extension" minOccurs="0"/>
														<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="VSWR" type="c:double" minOccurs="0">
															<xs:annotation>
																<xs:documentation>Voltage Standing Wave Ratio (VSWR) associated with this path.</xs:documentation>
															</xs:annotation>
														</xs:element>
														<xs:element name="CharacteristicImpedance" type="c:double" minOccurs="0">
															<xs:annotation>
																<xs:documentation>Characteristic impedance of this path (only applicable if entire path described has same characteristic impedance).</xs:documentation>
															</xs:annotation>
														</xs:element>
													</xs:sequence>
												</xs:extension>
											</xs:complexContent>
										</xs:complexType>
									</xs:element>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
					<xs:attributeGroup ref="c:DocumentRootAttributes"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<!--Bus type is an abstract type from which specific bus types are derived.  The TestStation schema defines a number of standard instrument communication buses.-->
	<xs:complexType name="Driver" abstract="true">
		<xs:annotation>
			<xs:documentation>Abstract type for instrument drivers.</xs:documentation>
		</xs:annotation>
		<xs:attribute name="fileName" type="c:NonBlankString" use="required"/>
		<xs:attribute name="filePath" type="xs:string"/>
	</xs:complexType>
	<xs:complexType name="IVI" abstract="true">
		<xs:annotation>
			<xs:documentation>IVI driver - includes structure for specifying whether the driver is an IVI-C or IVI-COM driver</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="Driver">
				<xs:sequence>
					<xs:element name="Class" type="c:NonBlankString" minOccurs="0" maxOccurs="unbounded">
						<xs:annotation>
							<xs:documentation>Name of IVI class(es) provided by this driver</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="ControlLanguage">
		<xs:annotation>
			<xs:documentation>Abstract type for control language identification</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Documentation" type="c:Document"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Bus" abstract="true">
		<xs:annotation>
			<xs:documentation>Abstract type for identifying the bus used to communicate with the instrument</xs:documentation>
		</xs:annotation>
	</xs:complexType>
	<xs:complexType name="Item">
		<xs:attribute name="name" type="xs:string" use="required"/>
	</xs:complexType>
	<xs:complexType name="RepeatedItem">
		<xs:annotation>
			<xs:documentation>Allows multiple identical items to be described with a single element in an instance document.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="Item">
				<xs:attribute name="baseIndex" type="xs:int">
					<xs:annotation>
						<xs:documentation>Starting index for the items.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="count" type="xs:int">
					<xs:annotation>
						<xs:documentation>Number fo identical items</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="incrementBy" type="xs:int" default="1">
					<xs:annotation>
						<xs:documentation>Specifies the value to increment by when calculating the value with which the replacement character is replaced.  Allows for defining items where paired items have different characteristics.  Defaults to 1.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="replacementCharacter" type="xs:string" use="optional" default="#">
					<xs:annotation>
						<xs:documentation>Character replaced with calculated index when repeated items are expanded. </xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="Network">
		<xs:annotation>
			<xs:documentation>Describes how the various instrument entities are connected.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="RepeatedItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="NetworkNode">
		<xs:complexContent>
			<xs:extension base="Item">
				<xs:attribute name="parent" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</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" 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="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="MinValue" type="c:Value" minOccurs="0">
				<xs:annotation>
					<xs:documentation>The minimum value of the specification. Two-sided specs (with a min and max value) will always have this.  One-sided specs may not. </xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="MaxValue" type="c:Value" minOccurs="0">
				<xs:annotation>
					<xs:documentation>The maximum value of the specification.  Two-sided specs (with a min and max value) will always have this.  One-sided specs may not.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Graph" type="xs:base64Binary" minOccurs="0" 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="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="xs:string" 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="xs:string" 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="xs:string" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
</xs:schema>

