<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2008 sp1 (http://www.altova.com) by Ron Fernandes (private) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mathml="http://www.w3.org/1998/Math/MathML" xmlns:svg="http://www.w3.org/2000/svg" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:import namespace="http://www.w3.org/1998/Math/MathML" schemaLocation="mathml2.xsd"/>
	<xs:import namespace="http://www.w3.org/2000/svg" schemaLocation="SVG.xsd"/>
	<xs:element name="ddml">
		<xs:annotation>
			<xs:documentation>Top-Level element describing a collection of data displays</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="project" minOccurs="0" maxOccurs="unbounded">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="name" type="xs:string" minOccurs="0"/>
							<xs:element name="model" minOccurs="0" maxOccurs="unbounded">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="name" minOccurs="0"/>
										<xs:element name="minX" type="xs:double"/>
										<xs:element name="minY" type="xs:double"/>
										<xs:element name="maxX" type="xs:double"/>
										<xs:element name="maxY" type="xs:double"/>
										<xs:element name="xDirection">
											<xs:simpleType>
												<xs:restriction base="xs:string">
													<xs:pattern value="RIGHT|LEFT"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
										<xs:element name="yDirection">
											<xs:simpleType>
												<xs:restriction base="xs:string">
													<xs:pattern value="UP|DOWN"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
										<xs:element name="backgroundColor" type="xs:long" minOccurs="0"/>
										<xs:element ref="param" minOccurs="0" maxOccurs="unbounded"/>
										<xs:element ref="display_objects"/>
										<xs:element name="showInProject" type="xs:boolean" minOccurs="0">
											<xs:annotation>
												<xs:documentation>Set to true if this model is meant to be displayed. Can be set to false if it is just a submodel to be referenced.</xs:documentation>
											</xs:annotation>
										</xs:element>
									</xs:sequence>
									<xs:attribute name="id" type="xs:ID" use="required"/>
								</xs:complexType>
							</xs:element>
							<xs:element ref="param" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
						<xs:attribute name="id" type="xs:ID" use="required"/>
					</xs:complexType>
				</xs:element>
				<xs:element name="variable_pool" minOccurs="0">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="variable" minOccurs="0" maxOccurs="unbounded">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="name" type="xs:string" minOccurs="0"/>
										<xs:element name="data_source_ref" type="xs:IDREF"/>
										<xs:element ref="mathml:apply" minOccurs="0"/>
										<xs:element ref="rules" minOccurs="0"/>
										<xs:element ref="param" minOccurs="0" maxOccurs="unbounded"/>
									</xs:sequence>
									<xs:attribute name="id" type="xs:ID" use="required"/>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="data_source_pool" minOccurs="0">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="data_source" minOccurs="0" maxOccurs="unbounded">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="name" minOccurs="0"/>
										<xs:element ref="param" minOccurs="0" maxOccurs="unbounded"/>
									</xs:sequence>
									<xs:attribute name="id" type="xs:ID" use="required"/>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="rule">
		<xs:annotation>
			<xs:documentation>Used to define thresholds and other if-then-else relationships</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:sequence>
					<xs:element name="if">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="comparisonOperator"/>
								<xs:element name="value">
									<xs:annotation>
										<xs:documentation>The value comparing to.</xs:documentation>
									</xs:annotation>
								</xs:element>
								<xs:element name="logicalOperator" minOccurs="0" maxOccurs="unbounded">
									<xs:complexType>
										<xs:sequence>
											<xs:element name="type">
												<xs:annotation>
													<xs:documentation>Can be either AND, OR, or XOR</xs:documentation>
												</xs:annotation>
												<xs:simpleType>
													<xs:restriction base="xs:string">
														<xs:pattern value="AND|OR|XOR"/>
													</xs:restriction>
												</xs:simpleType>
											</xs:element>
											<xs:element ref="comparisonOperator"/>
											<xs:element name="value">
												<xs:annotation>
													<xs:documentation>The value comparing to.</xs:documentation>
												</xs:annotation>
											</xs:element>
										</xs:sequence>
									</xs:complexType>
								</xs:element>
								<xs:element ref="param" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="then">
						<xs:complexType>
							<xs:sequence>
								<xs:choice>
									<xs:element name="var_ref" type="xs:IDREF">
										<xs:annotation>
											<xs:documentation>Reference to a variable whose value is the result</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="value">
										<xs:annotation>
											<xs:documentation>Value of the result</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element ref="rule" minOccurs="0"/>
								</xs:choice>
								<xs:element ref="param" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="else" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:choice>
									<xs:element name="var_ref" type="xs:IDREF"/>
									<xs:element name="value"/>
									<xs:element ref="rule" minOccurs="0"/>
								</xs:choice>
								<xs:element ref="param" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:element ref="param" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="param">
		<xs:annotation>
			<xs:documentation>A Generic parameter.  Can be used for any name-value pair</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="name" type="xs:string"/>
				<xs:element name="value"/>
				<xs:element name="type" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="comparisonOperator">
		<xs:annotation>
			<xs:documentation>Can be either GT, LT, GTE, LTE, EQ, NEQ</xs:documentation>
		</xs:annotation>
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:pattern value="GT|LT|GTE|LTE|EQ|NEQ"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<xs:complexType name="ObjectType">
		<xs:annotation>
			<xs:documentation>Basic items that all display objects share</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="name" minOccurs="0"/>
			<xs:choice>
				<xs:element name="point" minOccurs="3" maxOccurs="unbounded">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="x" type="xs:double"/>
							<xs:element name="y" type="xs:double"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:sequence>
					<xs:element name="gridRow" type="xs:long"/>
					<xs:element name="gridCol" type="xs:long"/>
				</xs:sequence>
			</xs:choice>
			<xs:element name="zOrder" type="xs:long" minOccurs="0"/>
			<xs:element name="custom_parameters" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element ref="param" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="dynamics" minOccurs="0" maxOccurs="unbounded">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="dynamicType">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:pattern value="builtin|visibility|text|subdrawing|scaleY|scaleX|scale|rotate|relativeMoveY|relativeMoveX|pathMove|lineWidth|lineStyle|foregroundColor|fillUp|fillRight|fillLeft|fillDown|fillEffect|curveType|blink|backgroundColor|arcDirection|absoluteMoveY|absoluteMoveX|fillColor|edgeColor"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="variable_use" minOccurs="0" maxOccurs="unbounded">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="name" minOccurs="0"/>
									<xs:element name="pool_ref" type="xs:IDREF">
										<xs:annotation>
											<xs:documentation>Reference to a vriable in the pool.</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element ref="color" minOccurs="0"/>
									<xs:element ref="rules" minOccurs="0"/>
									<xs:element ref="param" minOccurs="0" maxOccurs="unbounded"/>
								</xs:sequence>
								<xs:attribute name="id" type="xs:ID" use="required"/>
							</xs:complexType>
						</xs:element>
						<xs:element ref="rules"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID" use="required"/>
	</xs:complexType>
	<xs:complexType name="AxisType">
		<xs:sequence>
			<xs:element name="axisType">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:pattern value="TIME|VALUE"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="axisMin" type="xs:double" minOccurs="0"/>
			<xs:element name="axisMax" type="xs:double" minOccurs="0"/>
			<xs:element name="axisUnit" type="xs:string" minOccurs="0"/>
			<xs:element name="axisColor" type="xs:long" minOccurs="0"/>
			<xs:element name="axisLabel" type="xs:string" minOccurs="0"/>
			<xs:element name="axisLabelFont" type="xs:string" minOccurs="0"/>
			<xs:element name="axisLabelFontSize" type="xs:long" minOccurs="0"/>
			<xs:element name="axisLabelForegroundColor" type="xs:long" minOccurs="0"/>
			<xs:element name="axisLabelBackgroundColor" type="xs:long" minOccurs="0"/>
			<xs:element name="axisGrid" minOccurs="0" maxOccurs="unbounded">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="axisGridInterval" type="xs:double" minOccurs="0"/>
						<xs:element name="axisGridColor" type="xs:long" minOccurs="0"/>
						<xs:element name="axisGridUnits" type="xs:string" minOccurs="0"/>
						<xs:element name="showTicks" type="xs:boolean" minOccurs="0"/>
						<xs:element name="tickColor" type="xs:long" minOccurs="0"/>
						<xs:element name="tickLabelForegroundColor" type="xs:long" minOccurs="0"/>
						<xs:element name="tickLabelBackgroundColor" type="xs:long" minOccurs="0"/>
						<xs:element name="tickLabelFont" type="xs:string" minOccurs="0"/>
						<xs:element name="tickLabelFontSize" type="xs:long" minOccurs="0"/>
						<xs:element name="tickLabelFormat" type="xs:string" minOccurs="0"/>
						<xs:element name="tickLabelInterval" minOccurs="0"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="axis" type="AxisType"/>
	<xs:element name="rules">
		<xs:annotation>
			<xs:documentation>used to specify a change in an attribute(e.g. color, visibility) when the variable reaches a certain value or range of values</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="rule" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="GraphType">
		<xs:annotation>
			<xs:documentation>Items that all graph-type display objects share</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="ObjectType">
				<xs:sequence>
					<xs:element name="titleFont" type="xs:string" minOccurs="0"/>
					<xs:element name="title" type="xs:string" minOccurs="0"/>
					<xs:element name="titleColor" type="xs:long" minOccurs="0"/>
					<xs:element name="titleFontSize" type="xs:long" minOccurs="0"/>
					<xs:element name="backgroundColor" type="xs:long" minOccurs="0"/>
					<xs:element name="dataAreaColor" type="xs:long" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="object">
		<xs:annotation>
			<xs:documentation>can be any display object not that doesn't fit into one of the other categories including objects specified as primitive shapes (in svg), or can be used as the top-level element in a group of sub-objects.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="ObjectType">
					<xs:sequence>
						<xs:element ref="svg:svg" minOccurs="0"/>
						<xs:element ref="display_objects" minOccurs="0"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="slider">
		<xs:annotation>
			<xs:documentation>consists of some kind of indicator or icon that slides along a single value axis</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="GraphType">
					<xs:sequence>
						<xs:element name="orientation" default="HORIZONTAL">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:pattern value="HORIZONTAL|VERTICAL"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element ref="axis"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="stripchart">
		<xs:annotation>
			<xs:documentation>a line graph that plots values vs. time along a scrolling "paper" grid</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="GraphType">
					<xs:sequence>
						<xs:element name="xAxis" type="AxisType"/>
						<xs:element name="yAxis" type="AxisType"/>
						<xs:element name="scrollDirection" default="LEFT">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:pattern value="LEFT|RIGHT|UP|DOWN"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="frameScrollDuration" type="xs:double" minOccurs="0"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="xychart">
		<xs:annotation>
			<xs:documentation>a graph that plots variables in the y axis vs. other variables in the x axis.  The x,y variable pairs are specified with the xyPair elements</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="GraphType">
					<xs:sequence>
						<xs:element name="xAxis" type="AxisType"/>
						<xs:element name="yAxis" type="AxisType"/>
						<xs:element name="plotType" default="LINES">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:pattern value="LINES|POINTS"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="history" type="xs:long" minOccurs="0"/>
						<xs:element ref="xyPair" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="radialchart">
		<xs:annotation>
			<xs:documentation>a graph that represents variable values as distances outward from a central point.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="GraphType">
					<xs:sequence>
						<xs:element name="circularAxis" type="AxisType"/>
						<xs:element name="radialAxis" type="AxisType"/>
						<xs:element name="plotType" default="LINES">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:pattern value="LINES|POINTS"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="history" type="xs:long" minOccurs="0"/>
						<xs:element ref="xyPair" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="barchart">
		<xs:annotation>
			<xs:documentation>shows one or more variables as bars whose lengths correspond to the values</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="GraphType">
					<xs:sequence>
						<xs:element name="xAxis" type="AxisType"/>
						<xs:element name="yAxis" type="AxisType"/>
						<xs:element name="scrollDirection" default="LEFT">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:pattern value="LEFT|RIGHT|UP|DOWN"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="frameScrollDuration" type="xs:double" minOccurs="0"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="piechart" type="GraphType">
		<xs:annotation>
			<xs:documentation>shows the values of multiple variables as a percentage "slice" of their sum</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="textual">
		<xs:annotation>
			<xs:documentation>used for representing text and labels, including static text as well as annunciators</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="ObjectType">
					<xs:sequence>
						<xs:element name="orientation" default="HORIZONTAL">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:pattern value="HORIZONTAL|VERTICAL"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="label" type="xs:string" minOccurs="0"/>
						<xs:element name="labelColor" type="xs:long" minOccurs="0"/>
						<xs:element name="labelBackgroundColor" type="xs:long" minOccurs="0"/>
						<xs:element name="labelFont" type="xs:string" minOccurs="0"/>
						<xs:element name="labelFontSize" type="xs:long" minOccurs="0"/>
						<xs:element name="valuePosition" minOccurs="0">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:pattern value="LEFT|RIGHT|UP|DOWN|CENTER"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="valueBackgroundColor" type="xs:long" minOccurs="0"/>
						<xs:element name="valueFont" type="xs:string" minOccurs="0"/>
						<xs:element name="valueFontSize" type="xs:long" minOccurs="0"/>
						<xs:element name="valueFormat" type="xs:string" minOccurs="0"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="dial">
		<xs:annotation>
			<xs:documentation>a circular (or semi-circular) display that represents values as some sort of marker pointing to a value along the semi-circular value axis</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="GraphType">
					<xs:sequence>
						<xs:element ref="axis"/>
						<xs:element name="angleMin" type="xs:int" minOccurs="0">
							<xs:annotation>
								<xs:documentation>The angle position of the minimum value of the dial.  Angle is in degrees, where 0 is straight up, to the left of straight up is negative, to the right is positive</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="angleMax" type="xs:int" minOccurs="0">
							<xs:annotation>
								<xs:documentation>The angle position of the maximum value of the dial.  Together with axisMin, defines the shape and orientation of the dial.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="frequencyplot">
		<xs:annotation>
			<xs:documentation>a chart in the frequency domain</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="GraphType">
					<xs:sequence>
						<xs:element name="frequencyAxis" type="AxisType"/>
						<xs:element name="magnitudeAxis" type="AxisType"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="frequencyresponse">
		<xs:annotation>
			<xs:documentation>plots magnitude and phase on the same frequency axis</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="GraphType">
					<xs:sequence>
						<xs:element name="magnitudePlotTitle" type="xs:string" minOccurs="0"/>
						<xs:element name="phasePlotTitle" type="xs:string" minOccurs="0"/>
						<xs:element name="frequencyAxis" type="AxisType"/>
						<xs:element name="magnitudeAxis" type="AxisType"/>
						<xs:element name="phaseAxis" type="AxisType"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="hud">
		<xs:annotation>
			<xs:documentation>a typical aircraft heads-up display that consists of three vertical axes (typically used for velocity, pitch, and altitude) and one horizontal axis (typically for heading).  The center vertical axis rotates according to a fifth variable (typically roll).  The variables get applied in this order: center vertical axis rotation (roll), center vertical axis (pitch), horizontal axis (heading), right vertical axis (altitude), left vertical axis(velocity)</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="GraphType">
					<xs:sequence>
						<xs:element name="textColor" type="xs:long" minOccurs="0"/>
						<xs:element name="textFont" type="xs:string" minOccurs="0"/>
						<xs:element name="textFontSize" type="xs:long" minOccurs="0"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="button">
		<xs:annotation>
			<xs:documentation>a display object that looks like a button and, when pressed, can assign a value to a variable</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="ObjectType">
					<xs:sequence>
						<xs:element name="label" type="xs:string" minOccurs="0"/>
						<xs:element name="labelColor" type="xs:long" minOccurs="0"/>
						<xs:element name="labelFont" type="xs:string" minOccurs="0"/>
						<xs:element name="labelFontSize" type="xs:long" minOccurs="0"/>
						<xs:element name="value" type="xs:float" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="grid">
		<xs:annotation>
			<xs:documentation>a table that can contain any other display object, including other grids</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="GraphType">
					<xs:sequence>
						<xs:element name="numberOfRows" type="xs:long"/>
						<xs:element name="numberOfColumns" type="xs:long"/>
						<xs:element ref="display_objects"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="map">
		<xs:annotation>
			<xs:documentation>an area of the page that displays longitude/latitude map info.  The coordinates of all child objects of a map are in decimal latitude/longitude values.  For distance attributes (e.g. circle radius), degrees latitude are used as the measurement unit.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="ObjectType">
					<xs:sequence>
						<xs:element name="minLatitude" type="xs:float" minOccurs="0"/>
						<xs:element name="maxLatitude" type="xs:float" minOccurs="0"/>
						<xs:element name="minLongitude" type="xs:float" minOccurs="0"/>
						<xs:element name="maxLongitude" type="xs:float" minOccurs="0"/>
						<xs:element name="backgroundImageFile" minOccurs="0" maxOccurs="unbounded">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="fileName" type="xs:string"/>
									<xs:element ref="param" minOccurs="0" maxOccurs="unbounded"/>
								</xs:sequence>
								<xs:attribute name="id" type="xs:ID"/>
							</xs:complexType>
						</xs:element>
						<xs:element ref="object" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:group name="DisplayObjectGroup">
		<xs:all>
			<xs:element ref="object" minOccurs="0"/>
			<xs:element ref="slider" minOccurs="0"/>
			<xs:element ref="stripchart" minOccurs="0"/>
			<xs:element ref="xychart" minOccurs="0"/>
			<xs:element ref="radialchart" minOccurs="0"/>
			<xs:element ref="barchart" minOccurs="0"/>
			<xs:element ref="piechart" minOccurs="0"/>
			<xs:element ref="textual" minOccurs="0"/>
			<xs:element ref="dial" minOccurs="0"/>
			<xs:element ref="frequencyplot" minOccurs="0"/>
			<xs:element ref="frequencyresponse" minOccurs="0"/>
			<xs:element ref="hud" minOccurs="0"/>
			<xs:element ref="button" minOccurs="0"/>
			<xs:element ref="grid" minOccurs="0"/>
			<xs:element ref="map" minOccurs="0"/>
			<xs:element name="model_use" minOccurs="0">
				<xs:annotation>
					<xs:documentation>a reference to another model to be used as a sub object</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:complexContent>
						<xs:extension base="ObjectType">
							<xs:sequence>
								<xs:element name="id_ref" type="xs:IDREF">
									<xs:annotation>
										<xs:documentation>This id references another model in this project.</xs:documentation>
									</xs:annotation>
								</xs:element>
								<xs:element name="variable_mappings" minOccurs="0">
									<xs:complexType>
										<xs:sequence>
											<xs:element name="variable_mapping" maxOccurs="unbounded">
												<xs:complexType>
													<xs:sequence>
														<xs:element name="use_id" type="xs:IDREF"/>
														<xs:element name="pool_ref" type="xs:IDREF"/>
													</xs:sequence>
												</xs:complexType>
											</xs:element>
										</xs:sequence>
									</xs:complexType>
								</xs:element>
							</xs:sequence>
						</xs:extension>
					</xs:complexContent>
				</xs:complexType>
			</xs:element>
		</xs:all>
	</xs:group>
	<xs:element name="display_objects">
		<xs:complexType>
			<xs:group ref="DisplayObjectGroup" minOccurs="0" maxOccurs="unbounded"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="color" type="xs:long">
		<xs:annotation>
			<xs:documentation>All colors in DDML are encoded as 0xRRGGBB</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="xyPair">
		<xs:annotation>
			<xs:documentation>describes how the chart's variable_use items are paired</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="xVar" type="xs:IDREF">
					<xs:annotation>
						<xs:documentation>Reference to one of this object's variable_use elements</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="yVar" type="xs:IDREF">
					<xs:annotation>
						<xs:documentation>Reference to one of this object's variable_use elements</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>

