<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2010 rel. 3 (http://www.altova.com) by Michael Edward Rose (OmniMarkets) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:annotation>
		<xs:documentation>Configuration</xs:documentation>
	</xs:annotation>
	<xs:include schemaLocation="enums.xsd"/>
	<xs:annotation>
		<xs:documentation>All input schemas are derived from either data or calculation base schemas</xs:documentation>
	</xs:annotation>
	<xs:complexType name="XsdBaseSchema" abstract="true">
		<xs:annotation>
			<xs:documentation>Abstract base class for all input schemas</xs:documentation>
		</xs:annotation>
		<xs:sequence minOccurs="0">
			<xs:element name="dependsOn" type="xs:IDREFS" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Schemas upon which this schema depends</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="library" type="XsdLibrary" default="DEFAULT" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Calculation library (if relevant) DEFAULT means we pick the one we think is best. Otherwise, we use the selected software library and throw an exception if the calculation is not available from that library.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="uniqueID" type="xs:ID" use="optional">
			<xs:annotation>
				<xs:documentation>Unique identifier</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="referenceID" type="xs:IDREF" use="optional">
			<xs:annotation>
				<xs:documentation>Foreign key</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="XsdDataSchema" abstract="true">
		<xs:annotation>
			<xs:documentation>Base class for all schemas that generate a calculation object in the global cache. Same data schemas also generate output results.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="XsdBaseSchema"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="XsdNamedSchema" abstract="true">
		<xs:annotation>
			<xs:documentation>For calculators derived from market data of different dates ...</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="XsdDataSchema">
				<xs:attribute name="name" type="xs:string">
					<xs:annotation>
						<xs:documentation>Unique name</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="time" type="xs:dateTime">
					<xs:annotation>
						<xs:documentation>Default: TODAY</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="XsdCalculationSchema" abstract="true">
		<xs:complexContent>
			<xs:extension base="XsdBaseSchema">
				<xs:sequence>
					<xs:element name="comment" type="xs:string" minOccurs="0" maxOccurs="unbounded">
						<xs:annotation>
							<xs:documentation>Optional comments (these are echoed in the corresponding result)</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="XsdParameters">
		<xs:annotation>
			<xs:appinfo>REFERENCE</xs:appinfo>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="XsdDataSchema"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:annotation>
		<xs:documentation>More types</xs:documentation>
	</xs:annotation>
	<xs:simpleType name="XsdCharacter">
		<xs:restriction base="xs:string">
			<xs:length value="1"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="XslComplex">
		<xs:annotation>
			<xs:documentation>Complex number</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="real" type="xs:double" default="0.0" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Real part</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="imaginary" type="xs:double" default="0.0" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Imanginary part</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="XsdException">
		<xs:annotation>
			<xs:documentation>All exceptions are returned as results to the output document. </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="file" type="xs:string" minOccurs="0">
				<xs:annotation>
					<xs:documentation>File in which error occurred</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="line" type="xs:unsignedInt" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Line in source code where error occurred</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="method" type="xs:string" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Method where exception thrown (or rethrown)</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="condition" type="xs:string" minOccurs="0">
				<xs:annotation>
					<xs:documentation>The assertion that has been violated </xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="message" type="xs:string" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Error message</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="source" type="XsdLibrary" default="DEFAULT" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Was exception thrown in external library?</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="XsdPlaceHolder">
		<xs:annotation>
			<xs:documentation>Empty complex type</xs:documentation>
		</xs:annotation>
	</xs:complexType>
	<xs:complexType name="XsdQuantile">
		<xs:simpleContent>
			<xs:extension base="xs:double">
				<xs:attribute name="percentile" use="required">
					<xs:annotation>
						<xs:documentation>Between 0.0 and 1.0</xs:documentation>
					</xs:annotation>
					<xs:simpleType>
						<xs:restriction base="xs:double">
							<xs:maxInclusive value="1.0"/>
							<xs:minInclusive value="0.0"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="XsdTimeVariant">
		<xs:annotation>
			<xs:documentation>Date, time, or tenolr </xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:element name="date" type="xs:date">
				<xs:annotation>
					<xs:documentation>Date </xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="time" type="xs:dateTime">
				<xs:annotation>
					<xs:documentation>Date + time-of-day + time zone </xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="tenor" type="xs:duration">
				<xs:annotation>
					<xs:documentation>Offset to reference time </xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:choice>
	</xs:complexType>
	<xs:simpleType name="XsdDateOrType">
		<xs:union memberTypes="xs:date XsdDateType"/>
	</xs:simpleType>
	<xs:complexType name="XsdNamedValue">
		<xs:annotation>
			<xs:documentation>Double with name attribute</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="xs:double">
				<xs:attribute name="name" type="xs:string" use="required"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="XsdNameValuePair">
		<xs:annotation>
			<xs:documentation>Use to modify parameters ofr existing types</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="xs:anyType">
				<xs:attribute name="name" type="xs:string" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="XsdVariant">
		<xs:annotation>
			<xs:documentation>Various built-in types</xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:element name="boolean" type="xs:boolean">
				<xs:annotation>
					<xs:documentation>True or false</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="date" type="xs:date">
				<xs:annotation>
					<xs:documentation>Just what it says ....</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="dateTime" type="xs:dateTime">
				<xs:annotation>
					<xs:documentation>Date + time of day</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="double" type="xs:double">
				<xs:annotation>
					<xs:documentation>Just what it says ...</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="integer" type="xs:int">
				<xs:annotation>
					<xs:documentation>Just what it says ...</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="size" type="xs:unsignedInt">
				<xs:annotation>
					<xs:documentation>Unsigned integer</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="tenor" type="xs:duration">
				<xs:annotation>
					<xs:documentation>Tenor (duration)</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:choice>
	</xs:complexType>
	<xs:annotation>
		<xs:documentation>Indexed types</xs:documentation>
	</xs:annotation>
	<xs:complexType name="XsdIndexedDouble">
		<xs:simpleContent>
			<xs:extension base="xs:double">
				<xs:attribute name="index" type="xs:nonNegativeInteger" use="required"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:annotation>
		<xs:documentation>Configuration</xs:documentation>
	</xs:annotation>
	<xs:complexType name="XsdCacheConfig">
		<xs:sequence>
			<xs:element name="resolveDependenciesAtInsertion" type="xs:boolean" default="true" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Default: true</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="allowUniqueIDOverwrite" type="xs:boolean" default="false" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Default: false</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="clearCacheAfterProcessing" type="xs:boolean" default="true" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Default: true</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="xsdCacheConfig" type="XsdCacheConfig">
		<xs:annotation>
			<xs:documentation>Cache behavior</xs:documentation>
		</xs:annotation>
	</xs:element>
</xs:schema>
