<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v2004 rel. 4 U (http://www.xmlspy.com) by Ed Shaya (NASA) -->
<!-- edited with XML Spy v4.4 (http://www.xmlspy.com) by Ed Shaya (NASA) -->
<!--W3C Schema generated by XML Spy v4.4 (http://www.xmlspy.com)-->
<xs:schema targetNamespace="http://xml.astro.umd.edu/XDF" elementFormDefault="qualified" attributeFormDefault="unqualified" version="19" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://xml.astro.umd.edu/XDF">
	<xs:element name="XDF" type="XDFType"/>
	<xs:complexType name="XDFType">
		<xs:sequence>
			<xs:choice maxOccurs="unbounded">
				<xs:element name="Q" type="QType"/>
				<xs:element name="CompositeQ" type="compositeQType"/>
				<xs:element name="Array" type="arrayType"/>
				<xs:element name="Note" type="noteType" maxOccurs="unbounded"/>
				<xs:element name="Structure" type="structureType"/>
			</xs:choice>
		</xs:sequence>
		<xs:attribute name="name" type="xs:string"/>
		<xs:attribute name="description" type="xs:string"/>
	</xs:complexType>
	<xs:complexType name="alternateAxisType">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:sequence>
				<xs:element name="Units" type="unitsType"/>
				<xs:choice maxOccurs="unbounded">
					<xs:element name="Value" type="valueType"/>
					<xs:element name="ValueList" type="valueListType"/>
					<xs:element name="ValueGroup" type="valueGroupType"/>
				</xs:choice>
			</xs:sequence>
		</xs:choice>
		<xs:attribute name="name" type="xs:string"/>
		<xs:attribute name="description" type="xs:string"/>
		<xs:attribute name="axisDatatype">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="integer"/>
					<xs:enumeration value="float"/>
					<xs:enumeration value="exponential"/>
					<xs:enumeration value="string"/>
					<xs:enumeration value="url"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="arrayType">
		<xs:sequence>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="Q" type="QType"/>
				<xs:element name="CompositeQ" type="compositeQType"/>
			</xs:choice>
			<xs:choice>
				<xs:choice>
					<xs:sequence>
						<xs:element name="FieldAxis" type="fieldAxisType"/>
						<xs:element name="Axis" type="axisType" minOccurs="0" maxOccurs="unbounded"/>
						<xs:element name="DataStyle" type="dataStyleType"/>
					</xs:sequence>
					<xs:sequence>
						<xs:element name="FieldAxis" type="fieldAxisType"/>
						<xs:choice>
							<xs:element name="RowAxis" type="rowAxisType"/>
							<xs:element name="ColAxis" type="colAxisType"/>
						</xs:choice>
					</xs:sequence>
				</xs:choice>
				<xs:sequence>
					<xs:element name="Conversion" type="conversionType" minOccurs="0"/>
					<xs:choice>
						<xs:element name="Units" type="unitsType"/>
						<xs:element name="Unitless" type="unitlessType"/>
					</xs:choice>
					<xs:element name="DataFormat" type="dataFormatType"/>
					<xs:choice>
						<xs:sequence>
							<xs:element name="Axis" type="axisType" minOccurs="0" maxOccurs="unbounded"/>
							<xs:element name="DataStyle" type="dataStyleType"/>
						</xs:sequence>
						<xs:sequence>
							<xs:element name="ColAxis" type="colAxisType"/>
							<xs:element name="RowAxis" type="rowAxisType" minOccurs="0"/>
						</xs:sequence>
						<xs:sequence>
							<xs:element name="RowAxis" type="rowAxisType"/>
							<xs:element name="ColAxis" type="colAxisType" minOccurs="0"/>
						</xs:sequence>
					</xs:choice>
				</xs:sequence>
			</xs:choice>
			<xs:element name="Data" type="dataType"/>
			<xs:element name="Notes" type="notesType" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="name" type="xs:string"/>
		<xs:attribute name="description" type="xs:string"/>
		<xs:attribute name="arrayId" type="xs:ID"/>
		<xs:attribute name="appendTo" type="xs:IDREF"/>
		<xs:attribute name="class">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="spatial"/>
					<xs:enumeration value="temporal"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="infiniteValue" type="xs:string"/>
		<xs:attribute name="infiniteNegativeValue" type="xs:string"/>
		<xs:attribute name="noDataValue" type="xs:string"/>
		<xs:attribute name="notANumberValue" type="xs:string"/>
		<xs:attribute name="underflowValue" type="xs:string"/>
		<xs:attribute name="overflowValue" type="xs:string"/>
		<xs:attribute name="disabledValue" type="xs:string"/>
		<xs:attribute name="sourceId" type="xs:ID"/>
	</xs:complexType>
	<xs:complexType name="arrayRefType">
		<xs:attribute name="width" type="xs:string" use="required"/>
	</xs:complexType>
	<xs:complexType name="axisType">
		<xs:sequence>
			<xs:element name="AlternateAxis" type="alternateAxisType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="Conversion" type="conversionType" minOccurs="0"/>
			<xs:choice>
				<xs:element name="Units" type="unitsType"/>
				<xs:element name="Unitless" type="unitlessType"/>
			</xs:choice>
			<xs:element name="DataFormat" type="dataFormatType" minOccurs="0"/>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="ValueListAlgorithm" type="valueListAlgorithmType"/>
				<xs:element name="ValueList" type="valueListType"/>
				<xs:element name="ValueGroup" type="valueGroupType"/>
				<xs:element name="Value" type="valueType"/>
			</xs:choice>
		</xs:sequence>
		<xs:attribute name="name" type="xs:string"/>
		<xs:attribute name="description" type="xs:string"/>
		<xs:attribute name="axisId" type="xs:ID" use="required"/>
		<xs:attribute name="axisIdRef" type="xs:IDREF"/>
		<xs:attribute name="align" type="xs:IDREF"/>
		<xs:attribute name="size" type="xs:string" use="required"/>
	</xs:complexType>
	<xs:complexType name="binaryFloatType">
		<xs:attribute name="bits" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="32"/>
					<xs:enumeration value="64"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="binaryIntegerType">
		<xs:attribute name="signed" default="yes">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="yes"/>
					<xs:enumeration value="no"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="bits" type="xs:NMTOKEN" use="required"/>
	</xs:complexType>
	<xs:element name="Cell" type="xs:string"/>
	<xs:element name="Cells" type="xs:string"/>
	<xs:complexType name="charsType">
		<xs:attribute name="value" type="xs:string" default="&space;"/>
	</xs:complexType>
	<xs:complexType name="colAxisType">
		<xs:sequence>
			<xs:element name="AlternateAxis" type="alternateAxisType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="Conversion" type="conversionType" minOccurs="0"/>
			<xs:choice>
				<xs:element name="Units" type="unitsType"/>
				<xs:element name="Unitless" type="unitlessType"/>
			</xs:choice>
			<xs:element name="DataFormat" type="dataFormatType" minOccurs="0"/>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="ValueListAlgorithm" type="valueListAlgorithmType"/>
				<xs:element name="ValueList" type="valueListType"/>
				<xs:element name="ValueGroup" type="valueGroupType"/>
				<xs:element name="Value" type="valueType"/>
			</xs:choice>
		</xs:sequence>
		<xs:attribute name="name" type="xs:string"/>
		<xs:attribute name="description" type="xs:string"/>
		<xs:attribute name="align" type="xs:IDREF"/>
		<xs:attribute name="size" type="xs:string" use="required"/>
	</xs:complexType>
	<xs:element name="Add" type="xs:string"/>
	<xs:complexType name="columnType" mixed="true">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element ref="Cell"/>
			<xs:element ref="Cells"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="conversionType">
		<xs:choice>
			<xs:element ref="Multiply"/>
			<xs:element ref="Add"/>
			<xs:element ref="LogarithmBase"/>
			<xs:element ref="Exponent"/>
			<xs:element ref="TakeAsExponent"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="d0Type" mixed="true">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element name="D1" type="d1Type"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="d1Type" mixed="true">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element name="D2" type="d2Type"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="d2Type" mixed="true">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element name="D3" type="d3Type"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="d3Type" mixed="true">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element name="D4" type="d4Type"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="d4Type" mixed="true">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element name="D5" type="d5Type"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="d5Type" mixed="true">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element name="D6" type="d6Type"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="d6Type" mixed="true">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element ref="D7"/>
		</xs:choice>
	</xs:complexType>
	<xs:element name="D7" type="xs:string"/>
	<xs:complexType name="dataType" mixed="true">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element name="Data" type="dataType"/>
			<xs:element name="D0" type="d0Type"/>
			<xs:element name="Row" type="rowType"/>
			<xs:element name="Column" type="columnType"/>
		</xs:choice>
		<xs:attribute name="startByte" type="xs:NMTOKEN" default="0"/>
		<xs:attribute name="endByte" type="xs:NMTOKEN"/>
		<xs:attribute name="href" type="xs:ENTITY"/>
		<xs:attribute name="checksum" type="xs:NMTOKEN"/>
		<xs:attribute name="encoding">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="uuencoded"/>
					<xs:enumeration value="base64"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="compression">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="zip"/>
					<xs:enumeration value="gzip"/>
					<xs:enumeration value="bzip2"/>
					<xs:enumeration value="compress"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="dataFormatType">
		<xs:choice>
			<xs:element name="Float" type="floatType"/>
			<xs:element name="Integer" type="integerType"/>
			<xs:element name="String" type="stringType"/>
			<xs:element name="BinaryInteger" type="binaryIntegerType"/>
			<xs:element name="BinaryFloat" type="binaryFloatType"/>
			<xs:element name="ArrayRef" type="arrayRefType"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="dataStyleType">
		<xs:choice>
			<xs:element name="FixedWidth" type="fixedWidthType"/>
			<xs:element name="Tagged" type="taggedType"/>
			<xs:element name="Delimited" type="delimitedType"/>
		</xs:choice>
		<xs:attribute name="encoding" default="ISO-8859-1">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="ANSI"/>
					<xs:enumeration value="ISO-8859-1"/>
					<xs:enumeration value="UTF-8"/>
					<xs:enumeration value="UTF-16"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="endian">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="BigEndian"/>
					<xs:enumeration value="LittleEndian"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="dataStyleId" type="xs:ID"/>
		<xs:attribute name="dataStyleIdRef" type="xs:IDREF"/>
	</xs:complexType>
	<xs:complexType name="delimitedType">
		<xs:sequence>
			<xs:element name="DelimitedInstruction" type="delimitedInstructionType"/>
			<xs:element name="For" type="forType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="delimiterType">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element name="Chars" type="charsType"/>
			<xs:element ref="NewLine"/>
		</xs:choice>
		<xs:attribute name="repeatable" default="yes">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="yes"/>
					<xs:enumeration value="no"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:element name="DoInstruction">
		<xs:complexType/>
	</xs:element>
	<xs:element name="Exponent" type="xs:string"/>
	<xs:complexType name="fieldType">
		<xs:sequence>
			<xs:element name="Conversion" type="conversionType" minOccurs="0"/>
			<xs:choice>
				<xs:element name="Units" type="unitsType"/>
				<xs:element name="Unitless" type="unitlessType"/>
			</xs:choice>
			<xs:element name="DataFormat" type="dataFormatType"/>
			<xs:element name="Relation" type="relationType" minOccurs="0"/>
			<xs:element name="Note" type="noteType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="name" type="xs:string"/>
		<xs:attribute name="description" type="xs:string"/>
		<xs:attribute name="fieldId" type="xs:ID"/>
		<xs:attribute name="fieldIdRef" type="xs:IDREF"/>
		<xs:attribute name="class">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="spatial"/>
					<xs:enumeration value="temporal"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="complexComponent">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="real"/>
					<xs:enumeration value="imaginary"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="unitDirectionAxisRef" type="xs:IDREF"/>
		<xs:attribute name="lessThanValue" type="xs:NMTOKEN"/>
		<xs:attribute name="lessThanOrEqualValue" type="xs:NMTOKEN"/>
		<xs:attribute name="greaterThanValue" type="xs:NMTOKEN"/>
		<xs:attribute name="greaterThanOrEqualValue" type="xs:NMTOKEN"/>
		<xs:attribute name="infiniteValue" type="xs:string"/>
		<xs:attribute name="infiniteNegativeValue" type="xs:string"/>
		<xs:attribute name="noDataValue" type="xs:string"/>
		<xs:attribute name="notANumberValue" type="xs:string"/>
		<xs:attribute name="underflowValue" type="xs:string"/>
		<xs:attribute name="overflowValue" type="xs:string"/>
		<xs:attribute name="disabledValue" type="xs:string"/>
	</xs:complexType>
	<xs:complexType name="fieldAxisType">
		<xs:choice maxOccurs="unbounded">
			<xs:element name="Field" type="fieldType"/>
			<xs:element name="FieldGroup" type="fieldGroupType"/>
		</xs:choice>
		<xs:attribute name="name" type="xs:string"/>
		<xs:attribute name="description" type="xs:string"/>
		<xs:attribute name="axisId" type="xs:ID" use="required"/>
		<xs:attribute name="axisIdRef" type="xs:IDREF"/>
		<xs:attribute name="size" type="xs:string" use="required"/>
	</xs:complexType>
	<xs:complexType name="fieldGroupType">
		<xs:choice maxOccurs="unbounded">
			<xs:element name="Field" type="fieldType"/>
			<xs:element name="FieldGroup" type="fieldGroupType"/>
		</xs:choice>
		<xs:attribute name="name" type="xs:string"/>
		<xs:attribute name="description" type="xs:string"/>
		<xs:attribute name="class">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="spatial"/>
					<xs:enumeration value="temporal"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="fixedWidthType">
		<xs:sequence>
			<xs:element name="FixedWidthInstruction" type="fixedWidthInstructionType"/>
			<xs:element name="For" type="forType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="fixedWidthInstructionType">
		<xs:choice maxOccurs="unbounded">
			<xs:element name="Repeat" type="repeatType"/>
			<xs:element ref="ReadCell"/>
			<xs:element name="Skip" type="skipType"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="floatType">
		<xs:attribute name="width" type="xs:NMTOKEN" use="required"/>
		<xs:attribute name="precision" type="xs:NMTOKEN" use="required"/>
		<xs:attribute name="exponent" type="xs:NMTOKEN"/>
	</xs:complexType>
	<xs:complexType name="forType">
		<xs:choice>
			<xs:element name="For" type="forType"/>
			<xs:element ref="DoInstruction"/>
		</xs:choice>
		<xs:attribute name="axisIdRef" type="xs:IDREF" use="required"/>
	</xs:complexType>
	<xs:complexType name="indexType">
		<xs:attribute name="axisIdRef" type="xs:IDREF" use="required"/>
	</xs:complexType>
	<xs:complexType name="integerType">
		<xs:attribute name="type" default="decimal">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="decimal"/>
					<xs:enumeration value="octal"/>
					<xs:enumeration value="hexadecimal"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="width" type="xs:NMTOKEN" use="required"/>
		<xs:attribute name="signed" default="yes">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="yes"/>
					<xs:enumeration value="no"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="locationOrderType">
		<xs:sequence>
			<xs:element name="Index" type="indexType" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="LogarithmBase" type="xs:string"/>
	<xs:element name="Multiply" type="xs:string"/>
	<xs:element name="NewLine">
		<xs:complexType/>
	</xs:element>
	<xs:complexType name="noteType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="mark" type="xs:string"/>
				<xs:attribute name="noteId" type="xs:ID"/>
				<xs:attribute name="noteIdRef" type="xs:IDREF"/>
				<xs:attribute name="location" type="xs:string"/>
				<xs:attribute name="href" type="xs:string"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="notesType">
		<xs:sequence>
			<xs:element name="Note" type="noteType" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="NullQType">
		<xs:complexContent>
			<xs:restriction base="QType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="trivialQType">
		<xs:complexContent>
			<xs:extension base="NullQType">
				<xs:attribute name="value">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:whiteSpace value="preserve"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="polynomialType">
		<xs:attribute name="size" type="xs:NMTOKEN"/>
		<xs:attribute name="reverse" default="false">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="true"/>
					<xs:enumeration value="false"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="logarithm">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="10"/>
					<xs:enumeration value="natural"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:element name="ReadCell">
		<xs:complexType/>
	</xs:element>
	<xs:complexType name="recordTerminatorType">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element name="Chars" type="charsType"/>
			<xs:element ref="NewLine"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="relationType">
		<xs:attribute name="description" type="xs:string"/>
		<xs:attribute name="fieldIdRefs" type="xs:IDREFS" use="required"/>
		<xs:attribute name="role" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="precision"/>
					<xs:enumeration value="positiveError"/>
					<xs:enumeration value="negativeError"/>
					<xs:enumeration value="error"/>
					<xs:enumeration value="sensitivity"/>
					<xs:enumeration value="weight"/>
					<xs:enumeration value="reference"/>
					<xs:enumeration value="noteMark"/>
					<xs:enumeration value="quality"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="repeatType">
		<xs:choice maxOccurs="unbounded">
			<xs:element ref="ReadCell"/>
			<xs:element name="Skip" type="skipType"/>
			<xs:element name="Repeat" type="repeatType"/>
		</xs:choice>
		<xs:attribute name="count" type="xs:NMTOKEN" use="required"/>
	</xs:complexType>
	<xs:complexType name="rowType" mixed="true">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element ref="Cell"/>
			<xs:element ref="Cells"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="delimitedInstructionType">
		<xs:sequence>
			<xs:element name="Delimiter" type="delimiterType"/>
			<xs:element name="RecordTerminator" type="recordTerminatorType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="rowAxisType">
		<xs:sequence>
			<xs:element name="AlternateAxis" type="alternateAxisType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="Conversion" type="conversionType" minOccurs="0"/>
			<xs:choice>
				<xs:element name="Units" type="unitsType"/>
				<xs:element name="Unitless" type="unitlessType"/>
			</xs:choice>
			<xs:element name="DataFormat" type="dataFormatType" minOccurs="0"/>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="ValueListAlgorithm" type="valueListAlgorithmType"/>
				<xs:element name="ValueList" type="valueListType"/>
				<xs:element name="ValueGroup" type="valueGroupType"/>
				<xs:element name="Value" type="valueType"/>
			</xs:choice>
		</xs:sequence>
		<xs:attribute name="name" type="xs:string"/>
		<xs:attribute name="description" type="xs:string"/>
		<xs:attribute name="align" type="xs:IDREF"/>
		<xs:attribute name="size" type="xs:string" use="required"/>
	</xs:complexType>
	<xs:complexType name="skipType">
		<xs:choice maxOccurs="unbounded">
			<xs:element name="Chars" type="charsType"/>
			<xs:element ref="NewLine"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="stringType">
		<xs:attribute name="length" type="xs:NMTOKEN" use="required"/>
	</xs:complexType>
	<xs:complexType name="structureType">
		<xs:sequence>
			<xs:choice maxOccurs="unbounded">
				<xs:element name="Q" type="QType"/>
				<xs:element name="CompositeQ" type="compositeQType"/>
				<xs:element name="Array" type="arrayType"/>
				<xs:element name="Note" type="noteType"/>
				<xs:element name="Structure" type="structureType"/>
			</xs:choice>
		</xs:sequence>
		<xs:attribute name="name" type="xs:string"/>
		<xs:attribute name="description" type="xs:string"/>
	</xs:complexType>
	<xs:complexType name="tagToAxisType">
		<xs:attribute name="tag" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="d0"/>
					<xs:enumeration value="d1"/>
					<xs:enumeration value="d2"/>
					<xs:enumeration value="d3"/>
					<xs:enumeration value="d4"/>
					<xs:enumeration value="d5"/>
					<xs:enumeration value="d6"/>
					<xs:enumeration value="d7"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="axisIdRef" type="xs:IDREF" use="required"/>
	</xs:complexType>
	<xs:complexType name="taggedType">
		<xs:sequence>
			<xs:element name="TagToAxis" type="tagToAxisType" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="TakeAsExponent" type="xs:string"/>
	<xs:element name="Unitless" type="unitlessType"/>
	<xs:element name="Units" type="unitsType"/>
	<xs:complexType name="unitType">
		<xs:simpleContent>
			<xs:extension base="xs:string"/>
		</xs:simpleContent>
	</xs:complexType>
	<xs:element name="Unit" type="unitType"/>
	<xs:complexType name="unitlessType">
		<xs:attribute name="name" type="xs:string"/>
		<xs:attribute name="description" type="xs:string"/>
		<xs:attribute name="factor" type="xs:string"/>
		<xs:attribute name="offset" type="xs:string"/>
	</xs:complexType>
	<xs:complexType name="unitsType">
		<xs:sequence>
			<xs:element name="Unit" type="unitType" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="name" type="xs:string"/>
		<xs:attribute name="description" type="xs:string"/>
		<xs:attribute name="offset" type="xs:string"/>
		<xs:attribute name="factor" type="xs:float"/>
	</xs:complexType>
	<xs:complexType name="valueType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attributeGroup ref="valueAttrGrp"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:attributeGroup name="valueAttrGrp">
		<xs:attribute name="valueId" type="xs:ID"/>
		<xs:attribute name="valueRef" type="xs:IDREF"/>
		<xs:attribute name="special">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="infinite"/>
					<xs:enumeration value="infiniteNegative"/>
					<xs:enumeration value="noData"/>
					<xs:enumeration value="notANumber"/>
					<xs:enumeration value="underflow"/>
					<xs:enumeration value="overflow"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="inequality" default="ne">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="ne"/>
					<xs:enumeration value="lt"/>
					<xs:enumeration value="gt"/>
					<xs:enumeration value="lte"/>
					<xs:enumeration value="gte"/>
					<xs:enumeration value="sim"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:attributeGroup>
	<xs:element name="Value" type="valueType"/>
	<xs:complexType name="valueGroupType">
		<xs:choice maxOccurs="unbounded">
			<xs:element ref="Value"/>
			<xs:element name="ValueList" type="valueListType"/>
			<xs:element name="ValueListAlgorithm" type="valueListAlgorithmType"/>
			<xs:element name="ValueGroup" type="valueGroupType"/>
		</xs:choice>
		<xs:attribute name="name" type="xs:string"/>
		<xs:attribute name="description" type="xs:string"/>
	</xs:complexType>
	<xs:element name="ValueList" type="valueListType"/>
	<xs:complexType name="valueListType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="delimiter" type="xs:string" default="&space;"/>
				<xs:attribute name="valueListId" type="xs:ID"/>
				<xs:attribute name="valueListIdRef" type="xs:IDREF"/>
				<xs:attribute name="infiniteValue" type="xs:string"/>
				<xs:attribute name="infiniteNegativeValue" type="xs:string"/>
				<xs:attribute name="noDataValue" type="xs:string"/>
				<xs:attribute name="notANumberValue" type="xs:string"/>
				<xs:attribute name="underflowValue" type="xs:string"/>
				<xs:attribute name="overflowValue" type="xs:string"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="valueListAlgorithmType">
		<xs:sequence>
			<xs:element name="Polynomial" type="polynomialType"/>
		</xs:sequence>
		<xs:attribute name="valueListId" type="xs:ID"/>
		<xs:attribute name="valueListIdRef" type="xs:IDREF"/>
	</xs:complexType>
	<xs:complexType name="QType">
		<xs:sequence>
			<xs:choice maxOccurs="unbounded">
				<xs:element ref="Value"/>
				<xs:element name="ValueList" type="valueListType"/>
				<xs:element name="ValueGroup" type="valueGroupType"/>
			</xs:choice>
			<xs:choice minOccurs="0">
				<xs:element name="Units" type="unitsType"/>
				<xs:element name="Unitless" nillable="true"/>
			</xs:choice>
			<xs:choice minOccurs="0">
				<xs:element ref="Error"/>
				<xs:sequence>
					<xs:element ref="PositiveError"/>
					<xs:element ref="NegativeError"/>
				</xs:sequence>
			</xs:choice>
			<xs:element ref="Note" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="name" type="xs:string"/>
		<xs:attribute name="description" type="xs:string"/>
		<xs:attribute name="QId" type="xs:ID"/>
		<xs:attribute name="QRef" type="xs:IDREF"/>
		<xs:attribute name="datatype" use="optional">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="integer"/>
					<xs:enumeration value="float"/>
					<xs:enumeration value="exponential"/>
					<xs:enumeration value="string"/>
					<xs:enumeration value="url"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:element name="Q" type="QType"/>
	<xs:complexType name="compositeQType">
		<xs:sequence>
			<xs:choice maxOccurs="unbounded">
				<xs:element name="Q" type="QType"/>
				<xs:element name="CompositeQ" type="compositeQType"/>
			</xs:choice>
		</xs:sequence>
		<xs:attribute name="name"/>
		<xs:attribute name="description"/>
	</xs:complexType>
	<xs:element name="CompositeQ" type="compositeQType"/>
	<xs:complexType name="errorType">
		<xs:complexContent>
			<xs:extension base="QType">
				<xs:attribute name="type" default="random">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="random"/>
							<xs:enumeration value="systematic"/>
							<xs:enumeration value="gaussian"/>
							<xs:enumeration value="poisson"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="Error" type="errorType"/>
	<xs:element name="NegativeError" type="errorType"/>
	<xs:element name="PositiveError" type="errorType"/>
	<xs:element name="Note" type="noteType"/>
	<xs:complexType name="LocationNotes">
		<xs:sequence>
			<xs:element name="LocationOrder" type="locationOrderType" minOccurs="0"/>
			<xs:element ref="Note"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="namedTrivialQType">
		<xs:complexContent>
			<xs:restriction base="trivialQType">
				<xs:attribute name="name" use="prohibited"/>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
</xs:schema>
