<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.2 (http://www.xmlspy.com) by Ed Shaya (NASA) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
	<xs:annotation>
		<xs:documentation> XDF_018.xsd - eXtensible Data Format - version 0.18
        Date: May 3, 2002
        XML lanaguage schema definition.

        An XDF document contains arrays and data structures.  It  is
        designed to be both an interchange format for scientific data 
        and to be of archival quality.
        Multidimensional tables and scalar or vector fields are represented
        in a consistent way and become self describing.
        Axial information can be included so that the space in which 
         the data reside is fully described.  
        Thus, XDF provides a consistent way to hold spectra 
        with their wavelength scales, images with coordinate axes, 
        vector fields with unitDirection, data cubes in complicated 
        spaces, tables with complex column headers, and series of table 
       sections  with each section having a unique name. </xs:documentation>
	</xs:annotation>
	<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
	<xs:element name="XDF">
		<xs:complexType>
			<xs:choice maxOccurs="unbounded">
				<xs:element ref="array"/>
				<xs:element ref="parameter"/>
				<xs:element ref="parameterGroup"/>
				<xs:element ref="structure"/>
				<xs:element ref="note"/>
			</xs:choice>
			<xs:attribute name="name" type="xs:string"/>
			<xs:attribute name="description" type="xs:string"/>
			<xs:attribute name="type" type="xs:string" default="basic XDF"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="array">
		<xs:complexType>
			<xs:sequence>
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="parameter"/>
					<xs:element ref="parameterGroup"/>
				</xs:choice>
				<xs:sequence>
					<xs:choice>
						<xs:sequence>
							<xs:element ref="fieldAxis"/>
							<xs:element ref="axis" minOccurs="0" maxOccurs="unbounded"/>
							<xs:element ref="dataStyle"/>
						</xs:sequence>
						<xs:sequence>
							<xs:element ref="fieldAxis"/>
							<xs:choice>
								<xs:element ref="rowAxis"/>
								<xs:element ref="colAxis"/>
							</xs:choice>
						</xs:sequence>
						<xs:sequence>
							<xs:choice>
								<xs:element ref="units"/>
								<xs:element ref="unitless"/>
							</xs:choice>
							<xs:element ref="dataFormat"/>
							<xs:choice>
								<xs:sequence>
									<xs:choice>
										<xs:element ref="parameter"/>
										<xs:element ref="axis"/>
									</xs:choice>
									<xs:element ref="axis" minOccurs="0" maxOccurs="unbounded"/>
									<xs:element ref="dataStyle"/>
								</xs:sequence>
								<xs:sequence>
									<xs:element ref="colAxis"/>
									<xs:element ref="rowAxis"/>
								</xs:sequence>
								<xs:sequence>
									<xs:element ref="rowAxis"/>
									<xs:element ref="colAxis"/>
								</xs:sequence>
							</xs:choice>
						</xs:sequence>
					</xs:choice>
					<xs:element ref="data"/>
					<xs:element ref="notes" minOccurs="0"/>
				</xs:sequence>
			</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" type="xs:NMTOKENS"/>
			<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:element>
	<xs:element name="arrayRef">
		<xs:complexType>
			<xs:attribute name="length" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:unsignedByte">
						<xs:minInclusive value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="axis">
		<xs:complexType>
			<xs:sequence>
				<xs:choice>
					<xs:element ref="units"/>
					<xs:element ref="unitless"/>
				</xs:choice>
				<xs:choice minOccurs="0">
					<xs:element ref="value"/>
					<xs:element ref="valueList"/>
					<xs:element ref="valueGroup"/>
				</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="axisDatatype">
				<xs:simpleType>
					<xs:restriction base="xs:NMTOKEN">
						<xs:enumeration value="integer"/>
						<xs:enumeration value="float"/>
						<xs:enumeration value="exponential"/>
						<xs:enumeration value="xs:string"/>
						<xs:enumeration value="xs:anyURI"/>
						<xs:enumeration value="xs:date"/>
						<xs:enumeration value="xs:dateTime"/>
						<xs:enumeration value="xs:time"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="size" type="xs:unsignedByte" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="binaryFloat">
		<xs:complexType>
			<xs:attribute name="bits" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:unsignedByte">
						<xs:minInclusive value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="binaryInteger">
		<xs:complexType>
			<xs:attribute name="signed" default="yes">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="yes"/>
						<xs:enumeration value="no"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="bits" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:unsignedByte">
						<xs:minInclusive value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="chars">
		<xs:complexType>
			<xs:attribute name="value" use="optional" default=" ">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:minLength value="1"/>
						<xs:whiteSpace value="preserve"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="colAxis">
		<xs:complexType>
			<xs:sequence>
				<xs:choice minOccurs="0">
					<xs:element ref="units"/>
					<xs:element ref="unitless"/>
				</xs:choice>
				<xs:choice minOccurs="0">
					<xs:element ref="value"/>
					<xs:element ref="valueList"/>
					<xs:element ref="valueGroup"/>
				</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="axisDatatype">
				<xs:simpleType>
					<xs:restriction base="xs:NMTOKEN">
						<xs:enumeration value="integer"/>
						<xs:enumeration value="float"/>
						<xs:enumeration value="exponential"/>
						<xs:enumeration value="xs:string"/>
						<xs:enumeration value="xs:date"/>
						<xs:enumeration value="xs:dateTime"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="size" type="xs:unsignedLong" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="column" type="xs:string"/>
	<xs:element name="d0">
		<xs:complexType mixed="true">
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="d1"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="d1">
		<xs:complexType mixed="true">
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="d2"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="d2">
		<xs:complexType mixed="true">
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="d3"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="d3">
		<xs:complexType mixed="true">
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="d4"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="d4">
		<xs:complexType mixed="true">
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="d5"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="d5">
		<xs:complexType mixed="true">
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="d6"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="d6">
		<xs:complexType mixed="true">
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="d7"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="d7" type="xs:string"/>
	<xs:element name="data">
		<xs:complexType mixed="true">
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="data"/>
				<xs:element ref="d0"/>
				<xs:element ref="row"/>
				<xs:element ref="column"/>
			</xs:choice>
			<xs:attribute name="startByte" type="xs:unsignedLong" default="0"/>
			<xs:attribute name="endByte" type="xs:unsignedLong"/>
			<xs:attribute name="href" type="xs:ENTITY"/>
			<xs:attribute name="checksum" type="xs:string"/>
			<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:element>
	<xs:element name="dataFormat">
		<xs:complexType>
			<xs:choice>
				<xs:element ref="float"/>
				<xs:element ref="integer"/>
				<xs:element ref="string"/>
				<xs:element ref="binaryInteger"/>
				<xs:element ref="binaryFloat"/>
				<xs:element ref="arrayRef"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="dataStyle">
		<xs:complexType>
			<xs:choice>
				<xs:element ref="fixedWidth"/>
				<xs:element ref="tagged"/>
				<xs:element ref="delimited"/>
			</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:element>
	<xs:element name="delimited">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="delimitedInstruction"/>
				<xs:element ref="for"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="delimitedInstruction">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="delimiter"/>
				<xs:element ref="recordTerminator"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="delimiter">
		<xs:complexType>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="chars"/>
				<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>
	<xs:element name="doInstruction">
		<xs:complexType/>
	</xs:element>
	<xs:element name="field">
		<xs:complexType>
			<xs:sequence>
				<xs:sequence>
					<xs:choice>
						<xs:element ref="units"/>
						<xs:element ref="unitless"/>
					</xs:choice>
					<xs:element ref="dataFormat"/>
				</xs:sequence>
				<xs:element ref="relation" minOccurs="0"/>
				<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="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:element>
	<xs:element name="fieldAxis">
		<xs:complexType>
			<xs:choice maxOccurs="unbounded">
				<xs:element ref="field"/>
				<xs:element ref="fieldGroup"/>
			</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:unsignedByte" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="fieldGroup">
		<xs:complexType>
			<xs:choice maxOccurs="unbounded">
				<xs:element ref="field"/>
				<xs:element ref="fieldGroup"/>
			</xs:choice>
			<xs:attribute name="name" type="xs:string"/>
			<xs:attribute name="description" type="xs:string"/>
			<xs:attribute name="class" type="xs:NMTOKENS"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="fixedWidth">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="fixedWidthInstruction"/>
				<xs:element ref="for"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="fixedWidthInstruction">
		<xs:complexType>
			<xs:choice maxOccurs="unbounded">
				<xs:element ref="repeat"/>
				<xs:element ref="readCell"/>
				<xs:element ref="skip"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="float">
		<xs:complexType>
			<xs:attribute name="length" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:unsignedByte">
						<xs:minInclusive value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="precision" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:unsignedByte">
						<xs:minInclusive value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="exponent">
				<xs:simpleType>
					<xs:restriction base="xs:unsignedByte">
						<xs:minInclusive value="2"/>
						<xs:maxInclusive value="4"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="for">
		<xs:complexType>
			<xs:choice>
				<xs:element ref="for"/>
				<xs:element ref="doInstruction"/>
			</xs:choice>
			<xs:attribute name="axisIdRef" type="xs:IDREF" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="index">
		<xs:complexType>
			<xs:attribute name="axisIdRef" type="xs:IDREF" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="integer">
		<xs:complexType>
			<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="length" type="xs:unsignedByte" 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:element>
	<xs:element name="locationOrder">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="index" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="newLine">
		<xs:complexType/>
	</xs:element>
	<xs:element name="note">
		<xs:complexType>
			<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:anyURI"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="notes">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="locationOrder" minOccurs="0"/>
				<xs:element ref="note" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="parameter">
		<xs:complexType>
			<xs:sequence>
				<xs:choice>
					<xs:element ref="units"/>
					<xs:element ref="unitless"/>
				</xs:choice>
				<xs:choice maxOccurs="unbounded">
					<xs:element ref="value"/>
					<xs:element ref="valueList"/>
					<xs:element ref="valueGroup"/>
				</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="paramId" type="xs:ID"/>
			<xs:attribute name="paramIdRef" type="xs:IDREF"/>
			<xs:attribute name="datatype">
				<xs:simpleType>
					<xs:restriction base="xs:NMTOKEN">
						<xs:enumeration value="integer"/>
						<xs:enumeration value="float"/>
						<xs:enumeration value="exponential"/>
						<xs:enumeration value="xs:string"/>
						<xs:enumeration value="xs:anyURI"/>
						<xs:enumeration value="xs:date"/>
						<xs:enumeration value="xs:time"/>
						<xs:enumeration value="xs:dateTime"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="parameterGroup">
		<xs:complexType>
			<xs:choice maxOccurs="unbounded">
				<xs:element ref="parameter"/>
				<xs:element ref="parameterGroup"/>
			</xs:choice>
			<xs:attribute name="name" type="xs:string"/>
			<xs:attribute name="description" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="readCell">
		<xs:complexType/>
	</xs:element>
	<xs:element name="recordTerminator">
		<xs:complexType>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="chars"/>
				<xs:element ref="newLine"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="relation">
		<xs:complexType>
			<xs:attribute name="description" type="xs:string"/>
			<xs:attribute name="fieldIdRefs" type="xs:IDREFS" use="required"/>
			<xs:attribute name="role" type="xs:NMTOKENS" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="repeat">
		<xs:complexType>
			<xs:choice maxOccurs="unbounded">
				<xs:element ref="readCell"/>
				<xs:element ref="skip"/>
				<xs:element ref="repeat"/>
			</xs:choice>
			<xs:attribute name="count" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:unsignedByte">
						<xs:minInclusive value="2"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="row" type="xs:string"/>
	<xs:element name="rowAxis">
		<xs:complexType>
			<xs:sequence>
				<xs:choice minOccurs="0">
					<xs:element ref="units"/>
					<xs:element ref="unitless"/>
				</xs:choice>
				<xs:choice minOccurs="0">
					<xs:element ref="value"/>
					<xs:element ref="valueList"/>
					<xs:element ref="valueGroup"/>
				</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="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:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="size" type="xs:unsignedByte" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="skip">
		<xs:complexType>
			<xs:choice maxOccurs="unbounded">
				<xs:element ref="chars"/>
				<xs:element ref="newLine"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="string">
		<xs:complexType>
			<xs:attribute name="length" type="xs:unsignedByte" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="structure">
		<xs:complexType>
			<xs:choice maxOccurs="unbounded">
				<xs:element ref="array"/>
				<xs:element ref="parameter"/>
				<xs:element ref="parameterGroup"/>
				<xs:element ref="note"/>
				<xs:element ref="structure"/>
			</xs:choice>
			<xs:attribute name="name" type="xs:string"/>
			<xs:attribute name="description" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="tagToAxisMap">
		<xs:complexType>
			<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:element>
	<xs:element name="tagged">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="tagToAxisMap" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="unit">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:string">
					<xs:attribute name="power" type="xs:decimal"/>
					<xs:attribute name="description" type="xs:string"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="unitless">
		<xs:complexType/>
	</xs:element>
	<xs:element name="units">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="unit" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute name="factor" type="xs:float"/>
			<xs:attribute name="name" type="xs:string"/>
			<xs:attribute name="description" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="value">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:string">
					<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">
						<xs:simpleType>
							<xs:restriction base="xs:NMTOKEN">
								<xs:enumeration value="lessThan"/>
								<xs:enumeration value="lessThanOrEqual"/>
								<xs:enumeration value="greaterThan"/>
								<xs:enumeration value="greaterThanOrEqual"/>
							</xs:restriction>
						</xs:simpleType>
					</xs:attribute>
					<xs:attribute name="positiveErrorValue" type="xs:NMTOKEN"/>
					<xs:attribute name="negativeErrorValue" type="xs:NMTOKEN"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="valueGroup">
		<xs:complexType>
			<xs:choice maxOccurs="unbounded">
				<xs:element ref="value"/>
				<xs:element ref="valueList"/>
				<xs:element ref="valueGroup"/>
			</xs:choice>
			<xs:attribute name="name" type="xs:string"/>
			<xs:attribute name="description" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="valueList">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:string">
					<xs:attribute name="size" type="xs:NMTOKEN"/>
					<xs:attribute name="delimiter" default=" ">
						<xs:simpleType>
							<xs:restriction base="xs:string">
								<xs:whiteSpace value="preserve"/>
							</xs:restriction>
						</xs:simpleType>
					</xs:attribute>
					<xs:attribute name="repeatable" default="no">
						<xs:simpleType>
							<xs:restriction base="xs:NMTOKEN">
								<xs:enumeration value="yes"/>
								<xs:enumeration value="no"/>
							</xs:restriction>
						</xs:simpleType>
					</xs:attribute>
					<xs:attribute name="start" type="xs:float"/>
					<xs:attribute name="step" type="xs:float"/>
					<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:element>
</xs:schema>
