<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ms="http://mapserver.gis.umn.edu/mapserver" targetNamespace="http://mapserver.gis.umn.edu/mapserver" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.0.4">
	<!-- Definition of types -->
	<xs:simpleType name="rgbColorValueType">
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="0"/>
			<xs:maxInclusive value="255"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="rgbColorType">
		<xs:annotation>
			<xs:documentation>
       We could also support a hex color  ...
     </xs:documentation>
		</xs:annotation>
		<xs:attribute name="red" type="ms:rgbColorValueType" use="required"/>
		<xs:attribute name="green" type="ms:rgbColorValueType" use="required"/>
		<xs:attribute name="blue" type="ms:rgbColorValueType" use="required"/>
	</xs:complexType>
	<xs:simpleType name="stateEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="ON"/>
			<xs:enumeration value="OFF"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="embedStateEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="EMBED"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="stateEnumUnion">
		<xs:union memberTypes="ms:stateEnum ms:embedStateEnum"/>
	</xs:simpleType>
	<xs:simpleType name="booleanEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="TRUE"/>
			<xs:enumeration value="FALSE"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="positionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="ul"/>
			<xs:enumeration value="uc"/>
			<xs:enumeration value="ur"/>
			<xs:enumeration value="ll"/>
			<xs:enumeration value="lc"/>
			<xs:enumeration value="lr"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="fullPositionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cl"/>
			<xs:enumeration value="cc"/>
			<xs:enumeration value="cr"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="positionEnumUnion">
		<xs:union memberTypes="ms:positionEnum ms:fullPositionEnum"/>
	</xs:simpleType>
	<xs:complexType name="sizeType">
		<xs:attribute name="x" type="xs:positiveInteger"/>
		<xs:attribute name="y" type="xs:positiveInteger"/>
	</xs:complexType>
	<xs:complexType name="pointType">
		<xs:attribute name="x" type="xs:float"/>
		<xs:attribute name="y" type="xs:float"/>
	</xs:complexType>
	<xs:simpleType name="angleType">
		<xs:restriction base="xs:double">
			<xs:minInclusive value="-360"/>
			<xs:maxInclusive value="360"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="attributeType">
		<xs:restriction base="xs:string">
			<xs:pattern value="\[.+\]"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="debugModeEnum">
		<xs:restriction base="xs:string">
			<xs:pattern value="[oO][nN]|[oO][fF][fF]|1|2|3|4|5"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="unitType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="FEET"/>
			<xs:enumeration value="INCHES"/>
			<xs:enumeration value="KILOMETERS"/>
			<xs:enumeration value="METERS"/>
			<xs:enumeration value="MILES"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="extendedUnitType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="PIXELS"/>
			<xs:enumeration value="DD"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="unitTypeUnion">
		<xs:union memberTypes="ms:unitType ms:extendedUnitType"/>
	</xs:simpleType>
	<xs:complexType name="itemType">
		<xs:sequence>
			<xs:element name="item" minOccurs="0" maxOccurs="unbounded">
				<xs:complexType>
					<xs:simpleContent>
						<xs:extension base="xs:string">
							<xs:attribute name="name" type="xs:string" use="required"/>
						</xs:extension>
					</xs:simpleContent>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="alignEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="left"/>
			<xs:enumeration value="center"/>
			<xs:enumeration value="right"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Definition of Mapfile elements -->
	<!-- QUERYMAP Definition -->
	<xs:element name="QueryMap">
		<xs:complexType>
			<xs:all>
				<xs:element name="color" type="ms:rgbColorType" minOccurs="0"/>
				<xs:element name="size" type="ms:sizeType" minOccurs="0"/>
				<xs:element name="style" minOccurs="0">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="NORMAL"/>
							<xs:enumeration value="HILITE"/>
							<xs:enumeration value="SELECTED"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
			</xs:all>
			<xs:attribute name="status" type="ms:stateEnum"/>
		</xs:complexType>
	</xs:element>
	<!-- WEB Definition -->
	<xs:element name="Web">
		<xs:complexType>
			<xs:all>
				<xs:element name="empty" type="xs:string" minOccurs="0"/>
				<xs:element name="error" type="xs:string" minOccurs="0"/>
				<xs:element name="footer" type="xs:string" minOccurs="0"/>
				<xs:element name="header" type="xs:string" minOccurs="0"/>
				<xs:element name="imagePath" type="xs:string" minOccurs="0"/>
				<xs:element name="imageUrl" type="xs:string" minOccurs="0"/>
				<xs:element name="log" type="xs:string" minOccurs="0"/>
				<xs:element name="maxScaleDenom" type="xs:double" minOccurs="0"/>
				<xs:element name="maxTemplate" type="xs:string" minOccurs="0"/>
				<xs:element name="Metadata" type="ms:itemType" minOccurs="0"/>
				<xs:element name="minScaleDenom" type="xs:double" minOccurs="0"/>
				<xs:element name="minTemplate" type="xs:string" minOccurs="0"/>
				<xs:element name="outputFormat" type="xs:string" minOccurs="0"/>
				<xs:element name="template" type="xs:string" minOccurs="0"/>
			</xs:all>
		</xs:complexType>
	</xs:element>
	<xs:element name="OutputFormat">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="driver" type="xs:string" minOccurs="0"/>
				<xs:element name="extension" type="xs:string" minOccurs="0"/>
				<xs:element name="formatOption" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="imageMode">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="PC256"/>
							<xs:enumeration value="RGB"/>
							<xs:enumeration value="RGBA"/>
							<xs:enumeration value="BYTE"/>
							<xs:enumeration value="INT16"/>
							<xs:enumeration value="FLOAT32"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="mimeType" type="xs:string" minOccurs="0"/>
				<xs:element name="transparent" type="ms:stateEnum" minOccurs="0"/>
			</xs:sequence>
			<xs:attribute name="name" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<!-- LEGEND Definition -->
	<xs:element name="Legend">
		<xs:complexType>
			<xs:all>
				<xs:element name="imageColor" type="ms:rgbColorType" minOccurs="0"/>
				<xs:element ref="ms:Label" minOccurs="0"/>
				<xs:element name="outlineColor" type="ms:rgbColorType" minOccurs="0"/>
				<xs:element name="position" type="ms:positionEnum" minOccurs="0"/>
				<xs:element name="keySize" type="ms:sizeType" minOccurs="0"/>
				<xs:element name="keySpacing" type="ms:sizeType" minOccurs="0"/>
				<xs:element name="postLabelCache" type="ms:booleanEnum" minOccurs="0"/>
				<xs:element name="template" type="xs:string" minOccurs="0"/>
			</xs:all>
			<xs:attribute name="status" type="ms:embedStateEnum"/>
		</xs:complexType>
	</xs:element>
	<!-- SCALEBAR Definition -->
	<xs:element name="ScaleBar">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="align" type="ms:alignEnum"/>
				<xs:element name="backgroundColor" type="ms:rgbColorType" minOccurs="0"/>
				<xs:element name="color" type="ms:rgbColorType" minOccurs="0"/>
				<xs:element name="imageColor" type="ms:rgbColorType" minOccurs="0"/>
				<xs:element name="intervals" type="xs:positiveInteger" default="4" minOccurs="0"/>
				<xs:element ref="ms:Label" minOccurs="0"/>
				<xs:element name="outlineColor" minOccurs="0">
					<xs:simpleType>
						<xs:restriction base="xs:integer">
							<xs:minInclusive value="-1"/>
							<xs:maxInclusive value="255"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="position" type="ms:positionEnum" default="lr" minOccurs="0"/>
				<xs:element name="postLabelCache" type="ms:booleanEnum" default="FALSE" minOccurs="0"/>
				<xs:element name="size" type="ms:sizeType" minOccurs="0"/>
				<xs:element name="style" minOccurs="0">
					<xs:simpleType>
						<xs:restriction base="xs:integer">
							<xs:minInclusive value="0"/>
							<xs:maxInclusive value="1"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="units" type="ms:unitType" default="MILES" minOccurs="0"/>
			</xs:sequence>
			<xs:attribute name="status" type="ms:stateEnum" default="OFF"/>
		</xs:complexType>
	</xs:element>
	<!-- LABEL Definition -->
	<xs:element name="Label">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="angle" minOccurs="0">
					<xs:simpleType id="labelAngleType">
						<xs:union memberTypes="ms:angleType ms:attributeType">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:pattern value="[aA][uU][tT][oO]|[fF][oO][lL][lL][oO][wW]"/>
									<!-- attribute -->
								</xs:restriction>
							</xs:simpleType>
						</xs:union>
					</xs:simpleType>
				</xs:element>
				<xs:element name="antialias" type="ms:booleanEnum" minOccurs="0"/>
				<xs:element name="backgroundColor" type="ms:rgbColorType" minOccurs="0"/>
				<xs:element name="backgroundShadowColor" type="ms:rgbColorType" minOccurs="0"/>
				<xs:element name="backgroundShadowSize" type="ms:sizeType" minOccurs="0"/>
				<xs:element name="buffer" type="xs:integer" minOccurs="0"/>
				<xs:choice minOccurs="0">
					<xs:element name="color" type="ms:rgbColorType"/>
					<xs:element name="colorAttribute" type="ms:attributeType"/>
				</xs:choice>
				<xs:element name="encoding" minOccurs="0"/>
				<xs:element name="font" type="xs:string" minOccurs="0"/>
				<xs:element name="force" type="ms:booleanEnum" default="FALSE" minOccurs="0"/>
				<xs:element name="maxSize" type="xs:integer" default="256" minOccurs="0"/>
				<xs:element name="minDistance" type="xs:integer" minOccurs="0"/>
				<xs:element name="minFeatureSize" minOccurs="0">
					<xs:simpleType>
						<xs:union memberTypes="xs:integer">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:enumeration value="auto"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:union>
					</xs:simpleType>
				</xs:element>
				<xs:element name="minSize" type="xs:integer" default="4" minOccurs="0"/>
				<xs:element name="offset" type="ms:sizeType" minOccurs="0"/>
				<xs:choice minOccurs="0">
					<xs:element name="outlineColor" type="ms:rgbColorType"/>
					<xs:element name="outlineColorAttribute" type="ms:attributeType"/>
				</xs:choice>
				<xs:element name="partials" type="ms:booleanEnum" minOccurs="0"/>
				<xs:element name="position" minOccurs="0">
					<xs:simpleType>
						<xs:union memberTypes="ms:fullPositionEnum">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:enumeration value="AUTO"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:union>
					</xs:simpleType>
				</xs:element>
				<xs:element name="priority" default="1" minOccurs="0">
					<xs:simpleType>
						<xs:union memberTypes="ms:attributeType">
							<xs:simpleType>
								<xs:restriction base="xs:integer">
									<xs:minInclusive value="1"/>
									<xs:maxInclusive value="10"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:union>
					</xs:simpleType>
				</xs:element>
				<xs:element name="shadowColor" type="ms:rgbColorType" minOccurs="0"/>
				<xs:element name="shadowSize" type="ms:sizeType" minOccurs="0"/>
				<xs:element name="size">
					<xs:simpleType>
						<xs:union memberTypes="ms:attributeType xs:positiveInteger">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:enumeration value="tiny"/>
									<xs:enumeration value="small"/>
									<xs:enumeration value="medium"/>
									<xs:enumeration value="large"/>
									<xs:enumeration value="giant"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:union>
					</xs:simpleType>
				</xs:element>
				<xs:element name="wrap" type="xs:string" minOccurs="0"/>
			</xs:sequence>
			<xs:attribute name="type" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="BITMAP"/>
						<xs:enumeration value="TRUETYPE"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<!-- STYLE Definition -->
	<xs:element name="Style">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="angle" default="0" minOccurs="0">
					<xs:simpleType>
						<xs:union memberTypes="xs:double ms:attributeType"/>
					</xs:simpleType>
				</xs:element>
				<xs:element name="antialias" type="ms:booleanEnum"/>
				<xs:element name="backgroundColor" type="ms:rgbColorType" minOccurs="0"/>
				<xs:choice minOccurs="0">
					<xs:element name="color" type="ms:rgbColorType"/>
					<xs:element name="colorAttribute" type="ms:attributeType"/>
				</xs:choice>
				<xs:element name="maxSize" type="xs:integer" default="50" minOccurs="0"/>
				<xs:element name="minSize" type="xs:integer" default="0" minOccurs="0"/>
				<xs:element name="minWidth" type="xs:integer" minOccurs="0"/>
				<xs:element name="offset" type="ms:sizeType" minOccurs="0"/>
				<xs:choice minOccurs="0">
					<xs:element name="outlineColor" type="ms:rgbColorType"/>
					<xs:element name="outlineColorAttribute" type="ms:attributeType"/>
				</xs:choice>
				<xs:element name="size" default="1" minOccurs="0">
					<xs:simpleType>
						<xs:union memberTypes="xs:positiveInteger ms:attributeType"/>
					</xs:simpleType>
				</xs:element>
				<xs:element name="symbol" default="0" minOccurs="0">
					<xs:simpleType>
						<xs:union memberTypes="xs:positiveInteger xs:string"/>
					</xs:simpleType>
				</xs:element>
				<xs:element name="width" type="xs:positiveInteger" default="1" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<!--  CLASS Definition -->
	<xs:element name="Class">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="debug" type="ms:stateEnum" minOccurs="0"/>
				<xs:element name="expression" type="xs:string" minOccurs="0"/>
				<xs:element name="group" type="xs:string" minOccurs="0"/>
				<xs:element name="keyImage" type="xs:string" minOccurs="0"/>
				<xs:element ref="ms:Label" minOccurs="0"/>
				<xs:element name="Metadata" type="ms:itemType" minOccurs="0"/>
				<xs:element name="maxScaleDenom" type="xs:double" minOccurs="0"/>
				<xs:element name="minScaleDenom" type="xs:double" minOccurs="0"/>
				<xs:choice>
					<xs:element name="outlineColor" type="ms:rgbColorType"/>
					<xs:element name="outlineColorAttribute" type="ms:attributeType"/>
				</xs:choice>
				<xs:element name="size" type="xs:positiveInteger" default="1" minOccurs="0"/>
				<xs:element ref="ms:Style" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="template" type="xs:string" minOccurs="0"/>
				<xs:element name="text" type="xs:string" minOccurs="0"/>
			</xs:sequence>
			<xs:attribute name="name" type="xs:string"/>
			<xs:attribute name="status" type="ms:stateEnum" default="ON"/>
		</xs:complexType>
	</xs:element>
	<!-- SYMBOL Definition -->
	<xs:element name="Symbol">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="antialias" type="ms:booleanEnum" minOccurs="0"/>
				<xs:element name="character" type="xs:string" minOccurs="0"/>
				<xs:element name="filled" type="ms:booleanEnum" minOccurs="0"/>
				<xs:element name="font" type="xs:string" minOccurs="0"/>
				<xs:element name="gap" type="xs:integer" default="0" minOccurs="0"/>
				<xs:element name="image" type="xs:string" minOccurs="0"/>
				<xs:element name="lineCap" default="butt" minOccurs="0">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="butt"/>
							<xs:enumeration value="round"/>
							<xs:enumeration value="square"/>
							<xs:enumeration value="triangle"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="lineJoin" default="butt" minOccurs="0">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="round"/>
							<xs:enumeration value="miter"/>
							<xs:enumeration value="bevel"/>
							<xs:enumeration value="butt"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="lineJoinMaxSize" type="xs:integer" default="3" minOccurs="0"/>
				<xs:element name="Points" minOccurs="0">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="point" type="ms:pointType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="transparent" type="xs:positiveInteger" minOccurs="0"/>
			</xs:sequence>
			<xs:attribute name="name" type="xs:string"/>
			<xs:attribute name="type" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="vector"/>
						<xs:enumeration value="ellipse"/>
						<xs:enumeration value="pixmap"/>
						<xs:enumeration value="truetype"/>
						<xs:enumeration value="cartoline"/>
						<xs:enumeration value="hatch"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<!-- FEATURE Definition -->
	<xs:element name="Feature">
		<xs:complexType>
			<xs:all>
				<xs:element name="Points" minOccurs="0">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="point" type="ms:pointType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="text" type="xs:string" minOccurs="0"/>
				<xs:element name="wkt" type="xs:string" minOccurs="0"/>
			</xs:all>
		</xs:complexType>
	</xs:element>
	<!-- GIRD Definition -->
	<xs:element name="Grid">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="labelFormat" type="xs:string" minOccurs="0"/>
				<xs:element name="minArcs" type="xs:double" minOccurs="0"/>
				<xs:element name="maxArcs" type="xs:double" minOccurs="0"/>
				<xs:element name="minInterval" type="xs:double" minOccurs="0"/>
				<xs:element name="maxInterval" type="xs:double" minOccurs="0"/>
				<xs:element name="minSubdivide" type="xs:double" minOccurs="0"/>
				<xs:element name="maxSubdivide" type="xs:double" default="256" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Join">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="connection" type="xs:string" minOccurs="0"/>
				<xs:element name="connectionType" default="local" minOccurs="0">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="local"/>
							<xs:enumeration value="sde"/>
							<xs:enumeration value="ogr"/>
							<xs:enumeration value="postgis"/>
							<xs:enumeration value="oraclespatial"/>
							<xs:enumeration value="wms"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="footer" type="xs:string"/>
				<xs:element name="from" type="xs:string"/>
				<xs:element name="header" type="xs:string"/>
				<xs:element name="table" type="xs:string"/>
				<xs:element name="template" type="xs:string" minOccurs="0"/>
				<xs:element name="to" type="xs:string"/>
			</xs:sequence>
			<xs:attribute name="name" type="xs:string" use="required"/>
			<xs:attribute name="type" default="ONE-TO-ONE">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="ONE-TO-ONE"/>
						<xs:enumeration value="ONE-TO-MANY"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<!-- REFERENCE Definition -->
	<xs:element name="Reference">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="color" type="ms:rgbColorType" minOccurs="0"/>
				<xs:element name="extent" minOccurs="0">
					<xs:simpleType>
						<xs:list itemType="xs:double"/>
					</xs:simpleType>
				</xs:element>
				<xs:element name="image" type="xs:string" minOccurs="0"/>
				<xs:element name="marker" minOccurs="0">
					<xs:simpleType>
						<xs:union memberTypes="xs:positiveInteger xs:string"/>
					</xs:simpleType>
				</xs:element>
				<xs:element name="markerSize" type="xs:positiveInteger" minOccurs="0"/>
				<xs:element name="minBoxSize" type="xs:positiveInteger" minOccurs="0"/>
				<xs:element name="maxBoxSize" type="xs:positiveInteger" minOccurs="0"/>
				<xs:element name="outlineColor" minOccurs="0">
					<xs:simpleType>
						<xs:restriction base="xs:integer">
							<xs:minInclusive value="-1"/>
							<xs:maxInclusive value="255"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="size" type="ms:sizeType" minOccurs="0"/>
			</xs:sequence>
			<xs:attribute name="status" type="ms:stateEnum" default="OFF"/>
		</xs:complexType>
	</xs:element>
	<!-- LAYER Definition -->
	<xs:element name="Layer">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ms:Class" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="classItem" type="xs:string" minOccurs="0"/>
				<xs:element name="classGroup" type="xs:string" minOccurs="0"/>
				<xs:element name="connection" type="xs:string" minOccurs="0"/>
				<xs:element name="connectionType" default="local" minOccurs="0">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="local"/>
							<xs:enumeration value="sde"/>
							<xs:enumeration value="ogr"/>
							<xs:enumeration value="postgis"/>
							<xs:enumeration value="oraclespatial"/>
							<xs:enumeration value="wms"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="data" type="xs:string" minOccurs="0"/>
				<xs:element name="debug" type="ms:debugModeEnum" default="OFF" minOccurs="0"/>
				<xs:element name="dump" type="ms:booleanEnum" default="FALSE" minOccurs="0"/>
				<xs:element ref="ms:Feature" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="filter" type="xs:string" minOccurs="0"/>
				<xs:element name="filterItem" type="xs:string" minOccurs="0"/>
				<xs:element name="footer" type="xs:string" minOccurs="0"/>
				<xs:element ref="ms:Grid" minOccurs="0"/>
				<xs:element name="group" type="xs:string" minOccurs="0"/>
				<xs:element name="header" type="xs:string" minOccurs="0"/>
				<xs:element ref="ms:Join" minOccurs="0"/>
				<xs:element name="labelCache" type="ms:stateEnum" default="ON" minOccurs="0"/>
				<xs:element name="labelItem" type="xs:string" minOccurs="0"/>
				<xs:element name="labelMaxScaleDenom" type="xs:double" minOccurs="0"/>
				<xs:element name="labelMinScaleDenom" type="xs:double" minOccurs="0"/>
				<xs:element name="labelRequires" type="xs:string" minOccurs="0"/>
				<xs:element name="maxFeatures" type="xs:positiveInteger" minOccurs="0"/>
				<xs:element name="maxGeowidth" type="xs:double" minOccurs="0"/>
				<xs:element name="maxScaleDenom" type="xs:double" minOccurs="0"/>
				<xs:element name="Metadata" type="ms:itemType" minOccurs="0"/>
				<xs:element name="minGeowidth" type="xs:double" minOccurs="0"/>
				<xs:element name="minScaleDenom" type="xs:double" minOccurs="0"/>
				<xs:element name="offsite" type="ms:rgbColorType" minOccurs="0"/>
				<xs:element name="opacity" minOccurs="0">
					<xs:simpleType>
						<xs:union>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:enumeration value="ALPHA"/>
								</xs:restriction>
							</xs:simpleType>
							<xs:simpleType>
								<xs:restriction base="xs:integer">
									<xs:minInclusive value="0"/>
									<xs:maxInclusive value="100"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:union>
					</xs:simpleType>
				</xs:element>
				<xs:element name="postLabelCache" type="ms:booleanEnum" default="FALSE" minOccurs="0"/>
				<xs:element name="processing" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="projection" type="xs:string" minOccurs="0"/>
				<xs:element name="requires" type="xs:string" minOccurs="0"/>
				<xs:element name="sizeUnits" type="ms:extendedUnitType" default="PIXELS" minOccurs="0"/>
				<xs:element name="styleItem" type="xs:string" minOccurs="0"/>
				<xs:element name="symbolScaleDenom" type="xs:double" minOccurs="0"/>
				<xs:element name="template" type="xs:string" minOccurs="0"/>
				<xs:element name="tileIndex" type="xs:string" minOccurs="0"/>
				<xs:element name="tileItem" type="xs:string" default="location" minOccurs="0"/>
				<xs:element name="tolerance" type="xs:double" minOccurs="0"/>
				<xs:element name="toleranceUnits" type="ms:extendedUnitType" default="PIXELS" minOccurs="0"/>
				<xs:element name="transform" default="TRUE" minOccurs="0">
					<xs:simpleType>
						<xs:union memberTypes="ms:booleanEnum ms:fullPositionEnum"/>
					</xs:simpleType>
				</xs:element>
				<xs:element name="units" minOccurs="0">
					<xs:simpleType>
						<xs:union memberTypes="ms:extendedUnitType">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:enumeration value="percentages"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:union>
					</xs:simpleType>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="name" type="xs:string" use="required"/>
			<xs:attribute name="type" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="POINT"/>
						<xs:enumeration value="LINE"/>
						<xs:enumeration value="POLYGON"/>
						<xs:enumeration value="CIRCLE"/>
						<xs:enumeration value="ANNOTATION"/>
						<xs:enumeration value="RASTER"/>
						<xs:enumeration value="QUERY"/>
						<xs:enumeration value="CHART"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="status" default="ON">
				<xs:simpleType>
					<xs:union memberTypes="ms:stateEnum">
						<xs:simpleType>
							<xs:restriction base="xs:string">
								<xs:enumeration value="DEFAULT"/>
							</xs:restriction>
						</xs:simpleType>
					</xs:union>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<!-- MAP Definition -->
	<xs:element name="Map">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="angle" type="xs:double" default="0" minOccurs="0"/>
				<xs:element name="Config" type="ms:itemType" minOccurs="0"/>
				<xs:element name="dataPattern" type="xs:string" minOccurs="0"/>
				<xs:element name="debug" type="ms:debugModeEnum" default="OFF" minOccurs="0"/>
				<xs:element name="extent" minOccurs="0">
					<xs:simpleType>
						<xs:list itemType="xs:double"/>
					</xs:simpleType>
				</xs:element>
				<xs:element name="fontSet" type="xs:string" minOccurs="0"/>
				<xs:element name="imageColor" type="ms:rgbColorType" minOccurs="0"/>
				<xs:element name="imageType" type="xs:string" minOccurs="0"/>
				<xs:element ref="ms:Layer" maxOccurs="unbounded"/>
				<xs:element ref="ms:Legend" minOccurs="0"/>
				<xs:element name="maxSize" type="xs:positiveInteger" minOccurs="0"/>
				<xs:element name="projection" type="xs:string" minOccurs="0"/>
				<xs:element ref="ms:QueryMap" minOccurs="0"/>
				<xs:element ref="ms:Reference" minOccurs="0"/>
				<xs:element name="resolution" type="xs:positiveInteger" default="72" minOccurs="0"/>
				<xs:element name="scaleDenom" type="xs:double" minOccurs="0"/>
				<xs:element ref="ms:ScaleBar"/>
				<xs:element name="shapePath" type="xs:string" minOccurs="0"/>
				<xs:element name="size" type="ms:sizeType" minOccurs="0"/>
				<xs:element name="symbolSet" type="xs:string" minOccurs="0"/>
				<xs:element ref="ms:Symbol" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="templatePattern" type="xs:string" minOccurs="0"/>
				<xs:element name="units" type="ms:extendedUnitType" minOccurs="0"/>
				<xs:element ref="ms:Web" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute name="name" type="xs:string" use="required"/>
			<xs:attribute name="status" type="ms:stateEnum" default="ON"/>
			<xs:attribute name="version" type="xs:string" fixed="0.0.4"/>
		</xs:complexType>
	</xs:element>
</xs:schema>

