<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by bauer (IDE) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:simpleType name="ECL">
		<xs:annotation>
			<xs:documentation>An EDM Classification Label</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:minLength value="2"/>
			<xs:maxLength value="80"/>
			<xs:whiteSpace value="collapse"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="EAL">
		<xs:annotation>
			<xs:documentation>An EDM Attribute Label</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:minLength value="2"/>
			<xs:maxLength value="80"/>
			<xs:whiteSpace value="collapse"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="UUID">
		<xs:annotation>
			<xs:documentation>A Univerally Unique Identifier (UUID), in text format.  As defined in ISO/IEC 11578:1996 Information technology - Open Systems Interconnection - Remote Procedure Call RPC.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="attribute">
		<xs:annotation>
			<xs:documentation>An EDM Attribute</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="EAL" type="EAL">
				<xs:annotation>
					<xs:documentation>An EDM Attribute Label</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="value" type="xs:anySimpleType">
				<xs:annotation>
					<xs:documentation>The value of the attribute</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="feature">
		<xs:annotation>
			<xs:documentation>An EDM Feature</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="ECL" type="ECL">
				<xs:annotation>
					<xs:documentation>The EDM Classification Label</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="attribute" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>The list of EDM attributes associated with this feature</xs:documentation>
				</xs:annotation>
				<xs:complexType mixed="false">
					<xs:complexContent mixed="false">
						<xs:extension base="attribute"/>
					</xs:complexContent>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID"/>
	</xs:complexType>
	<xs:complexType name="component">
		<xs:annotation>
			<xs:documentation>A UHRB Component</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="feature">
				<xs:sequence>
					<xs:element name="feature" type="feature" minOccurs="0" maxOccurs="unbounded">
						<xs:annotation>
							<xs:documentation>A list of non-UHRB component features</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="room">
		<xs:annotation>
			<xs:documentation>A UHRB Room</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="component">
				<xs:sequence>
					<xs:element name="surfaceReference" nillable="true" maxOccurs="unbounded">
						<xs:annotation>
							<xs:documentation>References to the surfaces that define the geometric boundary of the room.  These surfaces must be contained in Wall components.</xs:documentation>
						</xs:annotation>
						<xs:complexType mixed="false">
							<xs:attribute name="surfaceID" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="fixture" minOccurs="0" maxOccurs="unbounded">
						<xs:annotation>
							<xs:documentation>A list of fixtures that are in this room</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:complexContent>
								<xs:extension base="component">
									<xs:sequence>
										<xs:element name="surface" type="surface" maxOccurs="unbounded">
											<xs:annotation>
												<xs:documentation>The set of surfaces that comprise the fixture.</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="movable" type="xs:boolean">
											<xs:annotation>
												<xs:documentation>A flag indicating if the fixture is movable</xs:documentation>
											</xs:annotation>
										</xs:element>
									</xs:sequence>
								</xs:extension>
							</xs:complexContent>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="surface">
		<xs:annotation>
			<xs:documentation>A surface made up of contiguous, coplanar triangles.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="component">
				<xs:sequence>
					<xs:element name="point" type="cartesianValue" minOccurs="3" maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="cartesianValue">
		<xs:annotation>
			<xs:documentation>A value with an X, Y, and Z component.  A vector, or point.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="x" type="xs:float"/>
			<xs:element name="y" type="xs:float"/>
			<xs:element name="z" type="xs:float"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="UHRB">
		<xs:annotation>
			<xs:documentation>Contains the definition of an Ultra-High Resolution Building for the Objective Terrain Format</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="component">
					<xs:sequence>
						<xs:element name="UUID" type="UUID">
							<xs:annotation>
								<xs:documentation>The Unique ID of the UHRB template</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="groundFloor" type="xs:string" minOccurs="0">
							<xs:annotation>
								<xs:documentation>The ground floor.  Must exist unless the UHRB is entirely subterranean</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="outsideRoom" type="room" minOccurs="0">
							<xs:annotation>
								<xs:documentation>The special outside room.  Must exist unless the UHRB is entirely subterranean</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="floorLevel" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>The list of floors.  Floors should be listed in ascending floor level</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:complexContent>
									<xs:extension base="component">
										<xs:sequence>
											<xs:element name="label" type="xs:string">
												<xs:annotation>
													<xs:documentation>The name of the floor level</xs:documentation>
												</xs:annotation>
											</xs:element>
											<xs:element name="room" type="room" maxOccurs="unbounded">
												<xs:annotation>
													<xs:documentation>The list of rooms on the floor level.</xs:documentation>
												</xs:annotation>
											</xs:element>
										</xs:sequence>
									</xs:extension>
								</xs:complexContent>
							</xs:complexType>
						</xs:element>
						<xs:element name="wall" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>The list of walls in the UHRB.</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:complexContent>
									<xs:extension base="component">
										<xs:sequence>
											<xs:element name="surface" type="surface" minOccurs="2" maxOccurs="unbounded">
												<xs:annotation>
													<xs:documentation>The set of surfaces that comprise the wall.</xs:documentation>
												</xs:annotation>
											</xs:element>
											<xs:element name="aperture" minOccurs="0" maxOccurs="unbounded">
												<xs:annotation>
													<xs:documentation>The list of apertures that are contained in the wall.</xs:documentation>
												</xs:annotation>
												<xs:complexType>
													<xs:complexContent>
														<xs:extension base="component">
															<xs:sequence>
																<xs:element name="surface" minOccurs="2" maxOccurs="unbounded">
																	<xs:annotation>
																		<xs:documentation>The set of surfaces that comprise the aperture.</xs:documentation>
																	</xs:annotation>
																	<xs:complexType>
																		<xs:complexContent>
																			<xs:extension base="surface">
																				<xs:sequence>
																					<xs:element name="roomReference" nillable="true">
																						<xs:complexType mixed="false">
																							<xs:attribute name="roomID" type="xs:IDREF"/>
																						</xs:complexType>
																					</xs:element>
																				</xs:sequence>
																			</xs:extension>
																		</xs:complexContent>
																	</xs:complexType>
																</xs:element>
																<xs:element name="open" type="xs:boolean">
																	<xs:annotation>
																		<xs:documentation>A flag indicating if the aperture is open or closed</xs:documentation>
																	</xs:annotation>
																</xs:element>
																<xs:element name="fixed" type="xs:boolean">
																	<xs:annotation>
																		<xs:documentation>A flag indicating if the state of "open" is chaneable.</xs:documentation>
																	</xs:annotation>
																</xs:element>
																<xs:element name="connector" type="xs:boolean">
																	<xs:annotation>
																		<xs:documentation>A flag indicating if the aperture is a connector.</xs:documentation>
																	</xs:annotation>
																</xs:element>
																<xs:element name="damage" type="xs:float">
																	<xs:annotation>
																		<xs:documentation>A number between 0.0 and 1.0 that indicates the level of damage of the aperture.</xs:documentation>
																	</xs:annotation>
																</xs:element>
															</xs:sequence>
														</xs:extension>
													</xs:complexContent>
												</xs:complexType>
											</xs:element>
										</xs:sequence>
									</xs:extension>
								</xs:complexContent>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
</xs:schema>