<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by Kevin Rodriguez (Information Technology) -->
<!--W3C Schema generated by XML Spy v4.4 U (http://www.xmlspy.com) From http://www.uiml.org/specs/uiml3/UIML3_0a_xsd.htm   -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
	<xs:complexType name="actionType">
		<xs:choice>
			<xs:sequence>
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element name="property" type="propertyType"/>
					<xs:element name="call" type="callType"/>
					<xs:element name="restructure" type="restructureType"/>
				</xs:choice>
				<xs:element name="event" type="eventType" minOccurs="0"/>
			</xs:sequence>
			<xs:sequence>
				<xs:element name="when-true" type="when-trueType" minOccurs="0"/>
				<xs:element name="when-false" type="when-falseType" minOccurs="0"/>
				<xs:element name="by-default" type="by-defaultType" minOccurs="0"/>
			</xs:sequence>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="behaviorType">
		<xs:sequence>
			<xs:element name="rule" type="ruleType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:NMTOKEN"/>
		<xs:attribute name="source" type="xs:string"/>
		<xs:attribute name="how" default="replace">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="union"/>
					<xs:enumeration value="cascade"/>
					<xs:enumeration value="replace"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="export" default="optional">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="hidden"/>
					<xs:enumeration value="optional"/>
					<xs:enumeration value="required"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="by-defaultType">
		<xs:sequence>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="property" type="propertyType"/>
				<xs:element name="call" type="callType"/>
			</xs:choice>
			<xs:element name="restructure" type="restructureType" minOccurs="0"/>
			<xs:element name="op" type="opType" minOccurs="0"/>
			<xs:element name="equal" type="equalType" minOccurs="0"/>
			<xs:element name="event" type="eventType" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="callType">
		<xs:sequence>
			<xs:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="name" type="xs:NMTOKEN"/>
		<xs:attribute name="class" type="xs:NMTOKEN"/>
	</xs:complexType>
	<xs:complexType name="conditionType">
		<xs:choice>
			<xs:element name="equal" type="equalType"/>
			<xs:element name="event" type="eventType"/>
			<xs:element name="op" type="opType"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="constantType">
		<xs:sequence>
			<xs:element name="constant" type="constantType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:NMTOKEN"/>
		<xs:attribute name="source" type="xs:string"/>
		<xs:attribute name="how" default="replace">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="union"/>
					<xs:enumeration value="cascade"/>
					<xs:enumeration value="replace"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="export" default="optional">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="hidden"/>
					<xs:enumeration value="optional"/>
					<xs:enumeration value="required"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="model" type="xs:string"/>
		<xs:attribute name="value" type="xs:string"/>
	</xs:complexType>
	<xs:complexType name="contentType">
		<xs:sequence>
			<xs:element name="constant" type="constantType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:NMTOKEN"/>
		<xs:attribute name="source" type="xs:string"/>
		<xs:attribute name="how" default="replace">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="union"/>
					<xs:enumeration value="cascade"/>
					<xs:enumeration value="replace"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="export" default="optional">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="hidden"/>
					<xs:enumeration value="optional"/>
					<xs:enumeration value="required"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="d-classType">
		<xs:sequence>
			<xs:element name="d-method" type="d-methodType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="d-property" type="d-propertyType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="event" type="eventType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="listener" type="listenerType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
		<xs:attribute name="source" type="xs:string"/>
		<xs:attribute name="how" default="replace">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="union"/>
					<xs:enumeration value="cascade"/>
					<xs:enumeration value="replace"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="export" default="optional">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="hidden"/>
					<xs:enumeration value="optional"/>
					<xs:enumeration value="required"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="used-in-tag" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="event"/>
					<xs:enumeration value="listener"/>
					<xs:enumeration value="part"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="maps-type" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="attribute"/>
					<xs:enumeration value="tag"/>
					<xs:enumeration value="class"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="maps-to" type="xs:string" use="required"/>
	</xs:complexType>
	<xs:complexType name="d-componentType">
		<xs:sequence minOccurs="0" maxOccurs="unbounded">
			<xs:element name="d-method" type="d-methodType"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
		<xs:attribute name="source" type="xs:string"/>
		<xs:attribute name="how" default="replace">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="union"/>
					<xs:enumeration value="cascade"/>
					<xs:enumeration value="replace"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="export" default="optional">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="hidden"/>
					<xs:enumeration value="optional"/>
					<xs:enumeration value="required"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="maps-to" type="xs:string"/>
		<xs:attribute name="location" type="xs:string"/>
	</xs:complexType>
	<xs:complexType name="d-methodType">
		<xs:sequence>
			<xs:element name="d-param" type="d-paramType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="script" type="scriptType" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
		<xs:attribute name="source" type="xs:string"/>
		<xs:attribute name="how" default="replace">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="union"/>
					<xs:enumeration value="cascade"/>
					<xs:enumeration value="replace"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="export" default="optional">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="hidden"/>
					<xs:enumeration value="optional"/>
					<xs:enumeration value="required"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="maps-to" type="xs:string" use="required"/>
		<xs:attribute name="return-type" type="xs:string"/>
	</xs:complexType>
	<xs:complexType name="d-paramType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="id" type="xs:NMTOKEN"/>
				<xs:attribute name="type" type="xs:string"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="d-propertyType">
		<xs:sequence>
			<xs:element name="d-method" type="d-methodType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="d-param" type="d-paramType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
		<xs:attribute name="maps-type" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="attribute"/>
					<xs:enumeration value="getMethod"/>
					<xs:enumeration value="setMethod"/>
					<xs:enumeration value="method"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="maps-to" type="xs:string" use="required"/>
		<xs:attribute name="return-type" type="xs:string"/>
	</xs:complexType>
	<xs:complexType name="equalType">
		<xs:sequence>
			<xs:element name="event" type="eventType"/>
			<xs:choice>
				<xs:element name="constant" type="constantType"/>
				<xs:element name="property" type="propertyType"/>
				<xs:element name="reference" type="referenceType"/>
				<xs:element name="op" type="opType"/>
			</xs:choice>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="eventType">
		<xs:attribute name="name" type="xs:NMTOKEN"/>
		<xs:attribute name="class" type="xs:NMTOKEN"/>
		<xs:attribute name="part-name" type="xs:NMTOKEN"/>
		<xs:attribute name="part-class" type="xs:NMTOKEN"/>
	</xs:complexType>
	<xs:complexType name="headType">
		<xs:sequence minOccurs="0" maxOccurs="unbounded">
			<xs:element name="meta" type="metaType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="interfaceType">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element name="structure" type="structureType"/>
			<xs:element name="style" type="styleType"/>
			<xs:element name="content" type="contentType"/>
			<xs:element name="behavior" type="behaviorType"/>
		</xs:choice>
		<xs:attribute name="id" type="xs:NMTOKEN"/>
		<xs:attribute name="source" type="xs:string"/>
		<xs:attribute name="how" default="replace">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="union"/>
					<xs:enumeration value="cascade"/>
					<xs:enumeration value="replace"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="export" default="optional">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="hidden"/>
					<xs:enumeration value="optional"/>
					<xs:enumeration value="required"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="iteratorType" mixed="true">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element name="constant" type="constantType"/>
			<xs:element name="property" type="propertyType"/>
			<xs:element name="call" type="callType"/>
		</xs:choice>
		<xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
	</xs:complexType>
	<xs:complexType name="listenerType">
		<xs:attribute name="class" type="xs:NMTOKEN"/>
		<xs:attribute name="attacher" type="xs:string"/>
	</xs:complexType>
	<xs:complexType name="logicType">
		<xs:sequence>
			<xs:element name="d-component" type="d-componentType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:NMTOKEN"/>
		<xs:attribute name="source" type="xs:string"/>
		<xs:attribute name="how" default="replace">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="union"/>
					<xs:enumeration value="cascade"/>
					<xs:enumeration value="replace"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="export" default="optional">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="hidden"/>
					<xs:enumeration value="optional"/>
					<xs:enumeration value="required"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="metaType">
		<xs:attribute name="name" type="xs:NMTOKEN" use="required"/>
		<xs:attribute name="content" type="xs:string" use="required"/>
	</xs:complexType>
	<xs:complexType name="opType">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element name="constant" type="constantType"/>
			<xs:element name="property" type="propertyType"/>
			<xs:element name="reference" type="referenceType"/>
			<xs:element name="call" type="callType"/>
			<xs:element name="op" type="opType"/>
			<xs:element name="event" type="eventType"/>
		</xs:choice>
		<xs:attribute name="name" type="xs:string" use="required"/>
	</xs:complexType>
	<xs:complexType name="paramType" mixed="true">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element name="property" type="propertyType"/>
			<xs:element name="reference" type="referenceType"/>
			<xs:element name="call" type="callType"/>
			<xs:element name="op" type="opType"/>
			<xs:element name="event" type="eventType"/>
			<xs:element name="constant" type="constantType"/>
			<xs:element name="iterator" type="iteratorType"/>
		</xs:choice>
		<xs:attribute name="name" type="xs:NMTOKEN"/>
	</xs:complexType>
	<xs:complexType name="partType">
		<xs:sequence>
			<xs:element name="style" type="styleType" minOccurs="0"/>
			<xs:element name="content" type="contentType" minOccurs="0"/>
			<xs:element name="behavior" type="behaviorType" minOccurs="0"/>
			<xs:element name="part" type="partType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="repeat" type="repeatType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:NMTOKEN"/>
		<xs:attribute name="class" type="xs:NMTOKEN"/>
		<xs:attribute name="source" type="xs:string"/>
		<xs:attribute name="where" default="last">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="first"/>
					<xs:enumeration value="last"/>
					<xs:enumeration value="before"/>
					<xs:enumeration value="after"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="where-part" type="xs:NMTOKEN"/>
		<xs:attribute name="how" default="replace">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="union"/>
					<xs:enumeration value="cascade"/>
					<xs:enumeration value="replace"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="export" default="optional">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="hidden"/>
					<xs:enumeration value="optional"/>
					<xs:enumeration value="required"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="peersType">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element name="presentation" type="presentationType"/>
			<xs:element name="logic" type="logicType"/>
		</xs:choice>
		<xs:attribute name="id" type="xs:NMTOKEN"/>
		<xs:attribute name="source" type="xs:string"/>
		<xs:attribute name="how" default="replace">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="union"/>
					<xs:enumeration value="cascade"/>
					<xs:enumeration value="replace"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="export" default="optional">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="hidden"/>
					<xs:enumeration value="optional"/>
					<xs:enumeration value="required"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="presentationType">
		<xs:sequence>
			<xs:element name="d-class" type="d-classType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:NMTOKEN"/>
		<xs:attribute name="source" type="xs:string"/>
		<xs:attribute name="base" type="xs:string" use="required"/>
		<xs:attribute name="how" default="replace">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="union"/>
					<xs:enumeration value="cascade"/>
					<xs:enumeration value="replace"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="export" default="optional">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="hidden"/>
					<xs:enumeration value="optional"/>
					<xs:enumeration value="required"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="propertyType" mixed="true">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element name="constant" type="constantType"/>
			<xs:element name="property" type="propertyType"/>
			<xs:element name="reference" type="referenceType"/>
			<xs:element name="call" type="callType"/>
			<xs:element name="op" type="opType"/>
			<xs:element name="event" type="eventType"/>
			<xs:element name="iterator" type="iteratorType"/>
		</xs:choice>
		<xs:attribute name="name" type="xs:NMTOKEN"/>
		<xs:attribute name="source" type="xs:string"/>
		<xs:attribute name="how" default="replace">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="union"/>
					<xs:enumeration value="cascade"/>
					<xs:enumeration value="replace"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="export" default="optional">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="hidden"/>
					<xs:enumeration value="optional"/>
					<xs:enumeration value="required"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="part-name" type="xs:NMTOKEN"/>
		<xs:attribute name="part-class" type="xs:NMTOKEN"/>
		<xs:attribute name="event-name" type="xs:NMTOKEN"/>
		<xs:attribute name="event-class" type="xs:NMTOKEN"/>
		<xs:attribute name="call-name" type="xs:NMTOKEN"/>
		<xs:attribute name="call-class" type="xs:NMTOKEN"/>
	</xs:complexType>
	<xs:complexType name="referenceType">
		<xs:attribute name="constant-name" type="xs:NMTOKEN"/>
		<xs:attribute name="url-name" type="xs:NMTOKEN"/>
	</xs:complexType>
	<xs:complexType name="repeatType">
		<xs:sequence>
			<xs:element name="iterator" type="iteratorType"/>
			<xs:element name="part" type="partType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="restructureType">
		<xs:sequence minOccurs="0">
			<xs:element name="template" type="templateType"/>
		</xs:sequence>
		<xs:attribute name="at-part" type="xs:NMTOKEN"/>
		<xs:attribute name="how" default="replace">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="union"/>
					<xs:enumeration value="cascade"/>
					<xs:enumeration value="replace"/>
					<xs:enumeration value="delete"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="where" default="last">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="first"/>
					<xs:enumeration value="last"/>
					<xs:enumeration value="before"/>
					<xs:enumeration value="after"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="where-part" type="xs:NMTOKEN"/>
		<xs:attribute name="source" type="xs:string"/>
	</xs:complexType>
	<xs:complexType name="ruleType">
		<xs:sequence minOccurs="0">
			<xs:element name="condition" type="conditionType"/>
			<xs:element name="action" type="actionType"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:NMTOKEN"/>
		<xs:attribute name="source" type="xs:string"/>
		<xs:attribute name="how" default="replace">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="union"/>
					<xs:enumeration value="cascade"/>
					<xs:enumeration value="replace"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="export" default="optional">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="hidden"/>
					<xs:enumeration value="optional"/>
					<xs:enumeration value="required"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="scriptType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="id" type="xs:NMTOKEN"/>
				<xs:attribute name="type" type="xs:NMTOKEN"/>
				<xs:attribute name="source" type="xs:string"/>
				<xs:attribute name="how" default="replace">
					<xs:simpleType>
						<xs:restriction base="xs:NMTOKEN">
							<xs:enumeration value="union"/>
							<xs:enumeration value="cascade"/>
							<xs:enumeration value="replace"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="export" default="optional">
					<xs:simpleType>
						<xs:restriction base="xs:NMTOKEN">
							<xs:enumeration value="hidden"/>
							<xs:enumeration value="optional"/>
							<xs:enumeration value="required"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="structureType">
		<xs:sequence>
			<xs:element name="part" type="partType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:NMTOKEN"/>
		<xs:attribute name="source" type="xs:string"/>
		<xs:attribute name="how" default="replace">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="union"/>
					<xs:enumeration value="cascade"/>
					<xs:enumeration value="replace"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="export" default="optional">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="hidden"/>
					<xs:enumeration value="optional"/>
					<xs:enumeration value="required"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="styleType">
		<xs:sequence>
			<xs:element name="property" type="propertyType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:NMTOKEN"/>
		<xs:attribute name="source" type="xs:string"/>
		<xs:attribute name="how" default="replace">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="union"/>
					<xs:enumeration value="cascade"/>
					<xs:enumeration value="replace"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="export" default="optional">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="hidden"/>
					<xs:enumeration value="optional"/>
					<xs:enumeration value="required"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="templateType">
		<xs:choice>
			<xs:element name="behavior" type="behaviorType"/>
			<xs:element name="constant" type="constantType"/>
			<xs:element name="content" type="contentType"/>
			<xs:element name="d-class" type="d-classType"/>
			<xs:element name="d-component" type="d-componentType"/>
			<xs:element name="interface" type="interfaceType"/>
			<xs:element name="logic" type="logicType"/>
			<xs:element name="part" type="partType"/>
			<xs:element name="peers" type="peersType"/>
			<xs:element name="presentation" type="presentationType"/>
			<xs:element name="property" type="propertyType"/>
			<xs:element name="restructure" type="restructureType"/>
			<xs:element name="rule" type="ruleType"/>
			<xs:element name="script" type="scriptType"/>
			<xs:element name="structure" type="structureType"/>
			<xs:element name="style" type="styleType"/>
		</xs:choice>
		<xs:attribute name="id" type="xs:NMTOKEN"/>
	</xs:complexType>
	<xs:element name="uiml">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="head" type="headType" minOccurs="0"/>
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element name="template" type="templateType"/>
					<xs:element name="interface" type="interfaceType"/>
					<xs:element name="peers" type="peersType"/>
				</xs:choice>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="when-falseType">
		<xs:sequence>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="property" type="propertyType"/>
				<xs:element name="call" type="callType"/>
			</xs:choice>
			<xs:element name="restructure" type="restructureType" minOccurs="0"/>
			<xs:element name="op" type="opType" minOccurs="0"/>
			<xs:element name="equal" type="equalType" minOccurs="0"/>
			<xs:element name="event" type="eventType" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="when-trueType">
		<xs:sequence>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="property" type="propertyType"/>
				<xs:element name="call" type="callType"/>
			</xs:choice>
			<xs:element name="restructure" type="restructureType" minOccurs="0"/>
			<xs:element name="op" type="opType" minOccurs="0"/>
			<xs:element name="equal" type="equalType" minOccurs="0"/>
			<xs:element name="event" type="eventType" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
</xs:schema>