<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="Instrument">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Identity">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="VersionString" type="xs:decimal"/>
							<xs:element name="DefaultSystemType" type="xs:string"/>
							<xs:element name="Family" type="xs:string"/>
							<xs:element name="InstrumentName" type="xs:string"/>
							<xs:element name="InstrumentType" type="xs:string"/>
							<xs:element name="HasLeakDetector" type="xs:boolean"/>
							<xs:element name="ChannelNamePrefix" type="xs:string"/>
							<xs:element name="FilenameRoot" type="xs:string"/>
							<xs:element name="InstrumentData" type="xs:string"/>
							<xs:element name="InstrumentEnum" type="xs:string"/>
							<xs:element name="EditorActiveX" type="xs:string"/>
							<xs:element name="ProxyCLSID" type="xs:string"/>
							<xs:element name="EditorTypeLib" type="xs:string"/>
							<xs:element name="EditorInterface" type="xs:string"/>
							<xs:element name="EditorEventsInterface" type="xs:string"/>
							<xs:element name="InstrTypeLib" type="xs:string"/>
							<xs:element name="InstrInterface" type="xs:string"/>
							<xs:element name="DiagInterface" type="xs:string"/>
							<xs:element name="RegistryAppID" type="xs:string"/>
							<xs:element name="ControlPanel" type="xs:string"/>
							<xs:element name="EditorExtName" type="xs:string"/>
							<xs:element name="PanelHeight" type="xs:unsignedShort"/>
							<xs:element name="PanelWidth" type="xs:unsignedShort"/>
							<xs:element name="PanelHtml" type="xs:string"/>
							<xs:element name="ImageFile" type="xs:string"/>
							<xs:element name="HelpFile" type="xs:string"/>
							<xs:element name="HelpSubFile" type="xs:string"/>
              <xs:element name="HelpFileAlarmPage" type="xs:string"/>
              <xs:element name="HelpSubFileAlarmPage" type="xs:string"/>
							<xs:element name="CoreResources" type="xs:string"/>
							<xs:element name="Resources" type="xs:string"/>
							<xs:element name="MinFirmwareVersion" type="xs:decimal"/>
							<xs:element name="Firmware" type="xs:string"/>
							<xs:element name="FirmwareProductName" type="xs:string"/>
							<xs:element name="ConsoleAssy" type="xs:string"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="InstrumentEnums">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Enum" maxOccurs="unbounded">
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="xs:string">
											<xs:attribute name="name" type="xs:string" use="required"/>
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Includes">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Include">
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="xs:string">
											<xs:attribute name="project" type="xs:string" use="required"/>
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
              <xs:element name="Interfaces">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Interface">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:string">
                            <xs:attribute name="name" type="xs:string" use="required"/>
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="Custom">
					<xs:complexType>
						<xs:sequence>
							<xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="XMLTypes">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="XMLType" maxOccurs="unbounded">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="RootElement" type="xs:string"/>
										<xs:element name="Instance" type="xs:string"/>
										<xs:element name="Schema" type="xs:string"/>
										<xs:element name="Transform" type="xs:string"/>
									</xs:sequence>
									<xs:attribute name="type" type="xs:string" use="required"/>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="HelpKeywords">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Keyword" maxOccurs="unbounded">
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="xs:string">
											<xs:attribute name="id" type="xs:unsignedShort" use="required"/>
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Channels">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Channel" maxOccurs="unbounded">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="ChannelKey" type="xs:unsignedByte"/>
										<xs:element name="ChannelType" type="xs:string"/>
										<xs:element name="ChannelName">
											<xs:complexType>
												<xs:simpleContent>
													<xs:extension base="xs:string">
														<xs:attribute name="localize" type="xs:boolean" use="required"/>
														<xs:attribute name="prefix" type="xs:boolean" use="required"/>
														<xs:attribute name="resourceHeader" type="xs:string" use="required"/>
													</xs:extension>
												</xs:simpleContent>
											</xs:complexType>
										</xs:element>
										<xs:element name="ChannelDesc">
											<xs:complexType>
												<xs:simpleContent>
													<xs:extension base="xs:string">
														<xs:attribute name="localize" type="xs:boolean" use="required"/>
														<xs:attribute name="prefix" type="xs:boolean" use="required"/>
														<xs:attribute name="resourceHeader" type="xs:string" use="required"/>
													</xs:extension>
												</xs:simpleContent>
											</xs:complexType>
										</xs:element>
										<xs:element name="ConsolePlotName">
											<xs:complexType>
												<xs:simpleContent>
													<xs:extension base="xs:string">
														<xs:attribute name="localize" type="xs:boolean" use="required"/>
														<xs:attribute name="prefix" type="xs:boolean" use="required"/>
													</xs:extension>
												</xs:simpleContent>
											</xs:complexType>
										</xs:element>
										<xs:element name="DataType" type="xs:unsignedByte"/>
										<xs:element name="XisRate" type="xs:boolean"/>
										<xs:element name="SamplingIntervalX" type="xs:string"/>
										<xs:element name="SamplingIntervalZ" type="xs:decimal"/>
										<xs:element name="IntegrationScale" type="xs:float"/>
										<xs:element name="Discrete" type="xs:boolean"/>
										<xs:element name="StartZ" type="xs:decimal"/>
										<xs:element name="EndZ" type="xs:decimal"/>
										<xs:element name="UnitsX">
											<xs:complexType>
												<xs:simpleContent>
													<xs:extension base="xs:string">
														<xs:attribute name="localize" type="xs:boolean" use="required"/>
													</xs:extension>
												</xs:simpleContent>
											</xs:complexType>
										</xs:element>
										<xs:element name="UnitsY">
											<xs:complexType>
												<xs:simpleContent>
													<xs:extension base="xs:string">
														<xs:attribute name="localize" type="xs:boolean" use="required"/>
													</xs:extension>
												</xs:simpleContent>
											</xs:complexType>
										</xs:element>
										<xs:element name="UnitsZ">
											<xs:complexType>
												<xs:attribute name="localize" type="xs:boolean" use="required"/>
											</xs:complexType>
										</xs:element>
										<xs:element name="EnableVarName" type="xs:string"/>
										<xs:element name="ConfigVarName"/>
										<xs:element name="Resolution" type="xs:unsignedShort"/>
										<xs:element name="ID" type="xs:string"/>
										<xs:element name="Diagnostic" type="xs:boolean"/>
										<xs:element name="Baseline" type="xs:boolean"/>
									</xs:sequence>
									<xs:attribute name="type" type="xs:string" use="required"/>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>
