<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2009 (http://www.altova.com) by Pencreach Yoann (FORUM8 Co., Ltd.) -->
<!--W3C Schema generated by XMLSpy v2009 (http://www.altova.com)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="Simulations">
		<xs:annotation>
			<xs:documentation>List of simulations</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence maxOccurs="unbounded">
				<xs:element ref="Simulation" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="PointType">
		<xs:annotation>
			<xs:documentation>List of coordinates</xs:documentation>
		</xs:annotation>
		<xs:list itemType="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="DirectionType">
		<xs:annotation>
			<xs:documentation>3D direction (Yaw) or (Yaw, Pitch, Roll) angles</xs:documentation>
		</xs:annotation>
		<xs:restriction base="PointType">
			<xs:minLength value="1"/>
			<xs:maxLength value="3"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Point3DType">
		<xs:annotation>
			<xs:documentation>3D position (X,Y) or (X,Y,Z)</xs:documentation>
		</xs:annotation>
		<xs:restriction base="PointType">
			<xs:minLength value="2"/>
			<xs:maxLength value="3"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="LengthUnitType">
		<xs:annotation>
			<xs:documentation>List of the different length units available for spatial information</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="Nanometer"/>
			<xs:enumeration value="Micrometer"/>
			<xs:enumeration value="Millimeter"/>
			<xs:enumeration value="Meter"/>
			<xs:enumeration value="Kilometer"/>
			<xs:enumeration value="Other"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="AngularUnitType">
		<xs:annotation>
			<xs:documentation>List of the different angular units available</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="Radian"/>
			<xs:enumeration value="Degree"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="TimeUnitType">
		<xs:annotation>
			<xs:documentation>List of the different time units available</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="Nanosecond"/>
			<xs:enumeration value="Microsecond"/>
			<xs:enumeration value="Millisecond"/>
			<xs:enumeration value="Second"/>
			<xs:enumeration value="Minute"/>
			<xs:enumeration value="Hour"/>
			<xs:enumeration value="Day"/>
			<xs:enumeration value="Month"/>
			<xs:enumeration value="Year"/>
			<xs:enumeration value="Other"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="InterpolationType">
		<xs:annotation>
			<xs:documentation>List of the different types of interpolation</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="Linear"/>
			<xs:enumeration value="Polynomial"/>
			<xs:enumeration value="Spline"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="Point3D">
		<xs:annotation>
			<xs:documentation>Represents a 3D or 2D point type. Defined by a coordinate text value ("X Y" or "X Y Z"). Usualy X and Y are used for the horizontal coordinates and Z for the altitude.</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="Point3DType"/>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="Direction">
		<xs:annotation>
			<xs:documentation>3D point type</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="DirectionType"/>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="ElementType">
		<xs:annotation>
			<xs:documentation>This type defines one element of the simulation. One element represents a single entity in the system. The state of an entity can evolve during the simulation but the entity cannot change in substance during the simulation. </xs:documentation>
		</xs:annotation>
		<xs:sequence minOccurs="0" maxOccurs="unbounded">
			<xs:element ref="Prop" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="Type" type="xs:string" use="required">
			<xs:annotation>
				<xs:documentation>String defining the type of the element. Any string can be used. The type of an element can be used to identify a unique type of object or a class of objects in the simulation.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="ID" type="xs:positiveInteger" use="required">
			<xs:annotation>
				<xs:documentation>Unique identifier for the element. Should be unique amongst all the elements of the simulation.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="Name" type="xs:string" use="optional">
			<xs:annotation>
				<xs:documentation>Name of the element.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="Description" type="xs:string" use="optional">
			<xs:annotation>
				<xs:documentation>Description of the element.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="Loop" type="xs:boolean" use="optional">
			<xs:annotation>
				<xs:documentation>Optional boolean attribute defining if the sequence of states of the element is executed in a loop during the simulation.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="Mesh3D" type="xs:anyURI">
			<xs:annotation>
				<xs:documentation>Link to a 3D mesh file for graphical representation.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="AbstractElementType">
		<xs:annotation>
			<xs:documentation>This type defines one element of the simulation. One element represents a single entity in the system. The state of an entity can evolve during the simulation but the entity cannot change in substance during the simulation. </xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="ElementType">
				<xs:sequence maxOccurs="unbounded">
					<xs:element name="St" type="AbstractStateType" maxOccurs="unbounded">
						<xs:annotation>
							<xs:documentation>One state of an element</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="LocalizedElementType">
		<xs:annotation>
			<xs:documentation>This type defines one element of the simulation. One element represents a single entity in the system. The state of an entity can evolve during the simulation but the entity cannot change in substance during the simulation. </xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="ElementType">
				<xs:sequence maxOccurs="unbounded">
					<xs:element ref="Transition" minOccurs="0">
						<xs:annotation>
							<xs:documentation>Defines the parameters of the transition between this state and the next state of the state sequence.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="St" type="LocalizedStateType" maxOccurs="unbounded">
						<xs:annotation>
							<xs:documentation>One state of an element</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="StateType">
		<xs:annotation>
			<xs:documentation>One state an element</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element ref="Prop" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="T" type="xs:double" use="optional">
			<xs:annotation>
				<xs:documentation>Defines the time when an element is in a given state. The time must be unique amongst all the states of one element. If no time is specified the time of the parent frame is used.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="Val" type="xs:string" use="optional">
			<xs:annotation>
				<xs:documentation>Defines the state of an object. The state can be described using any string.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="Anim" type="xs:string" use="optional">
			<xs:annotation>
				<xs:documentation>This attribute applies for an element represented by a meta object. It is used to animate parts of the meta object. The name of an animation starting at the time of the state can be specified with this attribute.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="LastState" type="xs:boolean" use="optional">
			<xs:annotation>
				<xs:documentation>Indicates if the state is the last state of the element.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="AbstractStateType">
		<xs:annotation>
			<xs:documentation>One state of an element</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="StateType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="LocalizedStateType">
		<xs:annotation>
			<xs:documentation>One state of an element with position information</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="StateType">
				<xs:sequence maxOccurs="3">
					<xs:element ref="P"/>
					<xs:element ref="D" minOccurs="0"/>
					<xs:element ref="Transition" minOccurs="0">
						<xs:annotation>
							<xs:documentation>Defines the parameters of the transition between this state and the next state of the state sequence. Used to override the transition parameters of the element.</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="Simulation">
		<xs:annotation>
			<xs:documentation>One simulation</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence maxOccurs="3">
				<xs:element ref="Units"/>
				<xs:element ref="Frames"/>
			</xs:sequence>
			<xs:attribute name="Name" type="xs:string">
				<xs:annotation>
					<xs:documentation>Name of the simulation, must be unique amongst all simulations on the same list.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="Description" type="xs:string">
				<xs:annotation>
					<xs:documentation>Description of the simulation. </xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="Length" type="xs:double" use="optional">
				<xs:annotation>
					<xs:documentation>Duration of the simulation. This attribute is optional. When no length is specified the difference between the maximum and minimum time found in the elements of the simulation should be used.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="Units">
		<xs:annotation>
			<xs:documentation>Defines the different units used for all the elements of a simulation.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="TimeUnit" type="TimeUnitType" use="required">
				<xs:annotation>
					<xs:documentation>The time unit represents the unit used by all the elements of a simulation. This information is required for a simulation.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="LengthUnit" type="LengthUnitType" use="required">
				<xs:annotation>
					<xs:documentation>The length unit represents the spatial length unit used  by all the elements of a simulation. This information is required for a simulation.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="AngularUnit" type="AngularUnitType" use="required">
				<xs:annotation>
					<xs:documentation>The angular unit represents the unit used by all the elements of a simulation. This information is required for a simulation.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="AbstractElmt" type="AbstractElementType">
		<xs:annotation>
			<xs:documentation>One element of the simulation that does not include position information.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="FixedElmt" type="LocalizedElementType">
		<xs:annotation>
			<xs:documentation>One element of the simulation. Fixed elements can behave as animated elements but should be used to represent the environment of the simulation. For example, in a traffic simulation, traffic signals, road signs and trees can be considered as non-moving objects and should be defined as fixed elements. The state of a fixed element can change with the time allowing it to represent the different phases of a traffic signal for example.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="MovingElmt" type="LocalizedElementType">
		<xs:annotation>
			<xs:documentation>Element of the scene. Moving elements should be used to represent objects that have a position that evolves during the simulation. For example, in a traffic simulation, vehicles and pedestrians should be defined as moving elements.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="Transition">
		<xs:annotation>
			<xs:documentation>Defines the parameters of the transition between the states of the state sequence.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="Active" type="xs:boolean" use="required">
				<xs:annotation>
					<xs:documentation>Defines if the element must go through a transition between this state and the next state.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="Interpolation" type="InterpolationType" use="optional" default="Linear">
				<xs:annotation>
					<xs:documentation>Defines the type of interpolation to use for the transition to the next state.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="P" type="Point3D">
		<xs:annotation>
			<xs:documentation>Represents a 3D or 2D point type. Defined by a coordinate text value ("X Y" or "X Y Z"). Usually X and Y are used for the horizontal coordinates and Z for the altitude.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="D" type="Direction">
		<xs:annotation>
			<xs:documentation>Direction of an element (ie. orientation in 3D). Defined by a text value ("Yaw" or "Yaw Pitch Roll").</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="Prop">
		<xs:annotation>
			<xs:documentation>Any type of property of an object.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="Name" type="xs:string" use="required">
				<xs:annotation>
					<xs:documentation>Name of the property, must be unique for each object.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="Value" type="xs:string" use="required">
				<xs:annotation>
					<xs:documentation>Value of the property</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="Frame">
		<xs:annotation>
			<xs:documentation>Stores the information of a given time interval of the simulation.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence maxOccurs="unbounded">
				<xs:element ref="MovingElmt" minOccurs="0" maxOccurs="unbounded">
					<xs:annotation>
						<xs:documentation>Element of the scene. Moving elements should be used to represent objects that have a position that evolves during the simulation. For example, in a traffic simulation, vehicles and pedestrians should be defined as moving elements.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element ref="FixedElmt" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="AbstractElmt" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute name="Time" type="xs:double" use="required">
				<xs:annotation>
					<xs:documentation>Start time of the frame. All the elements present in the frame must have states starting after this time.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="Length" type="xs:double" use="optional">
				<xs:annotation>
					<xs:documentation>Length of the frame: time before the next frame.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="Frames">
		<xs:annotation>
			<xs:documentation>List of frames</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="Frame" minOccurs="0" maxOccurs="unbounded">
					<xs:annotation>
						<xs:documentation>Stores the information for a given time interval of the simulation. A frame is an aggregation of elements of a simulation.</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>
