<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:annotation>
		<xs:documentation xml:lang="en">
      LDL schema v1.2, 25-06-2006
      by Christian Martel (christian.martel@pentila.com),
      by Steve Giraud (steve.giraud@pentila.com),
      by Igor Barma (igor.barma@pentila.com),
      by Christine Ferraris (christine.ferraris@univ-savoie.fr),
      by Laurence Vignollet (laurence.vignollet@univ-savoie.fr),
      by Jean-Pierre David (jean-pierre.david@imag.fr),
      by Anne Lejeune (anne.lejeune@imag.fr),
      by Guillaume Durand (guillaume.durand@univ-savoie.fr),
      This schema defines terms for LDL learning Design Langage
    </xs:documentation>
	</xs:annotation>
	
	<xs:element name="Scenario">
		<xs:complexType>
			<xs:all>
				<xs:element ref="metadonnees"/>
				<xs:element ref="roles"/>
				<xs:element ref="enceintes"/>
				<xs:element ref="interactions"/>
				<xs:element ref="structures"/>
				<xs:element ref="rules"/>
				<xs:element ref="positions"/>
			</xs:all>
		</xs:complexType>
	</xs:element>
	<xs:element name="action" type="xs:string"/>
	<xs:element name="author" type="xs:string"/>
	<xs:element name="title" type="xs:string"/>
	<xs:element name="uid" type="xs:string"/>
	<xs:element name="description" type="xs:string"/>
	<xs:element name="goal" type="xs:string"/>
	<xs:element name="target" type="xs:string"/>
	<xs:element name="laPosition" type="xs:string"/>
	<xs:element name="dans" type="xs:string"/>
	<xs:element name="de" type="xs:string"/>
	<xs:element name="sur" type="xs:string"/>
	<xs:element name="interaction_id" type="xs:string"/>
	<xs:element name="exprCond" type="xs:string"/>
	<xs:element name="param" type="xs:string"/>
	<xs:element name="val" type="xs:string"/>
	<xs:attribute name="kindOfStructure">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:enumeration value="selection"/>
				<xs:enumeration value="sequence"/>
				<xs:enumeration value="all"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:attribute>
	<xs:attribute name="kindOfEnceinte">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:enumeration value="folder"/>
				<xs:enumeration value="file"/>
				<xs:enumeration value="text"/>
				<xs:enumeration value="url"/>
				<xs:enumeration value="forum"/>
				<xs:enumeration value="chat"/>
				<xs:enumeration value="atelier"/>
				<xs:enumeration value="method"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:attribute>
	<xs:attribute name="partition">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:enumeration value="individuelle"/>
				<xs:enumeration value="commune"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:attribute>
	<xs:element name="valeur">
		<xs:complexType mixed="true">
			<xs:choice minOccurs="0">
				<xs:element ref="Observer"/>
				<xs:element ref="UserChoice"/>
				<xs:element ref="TimeLimit"/>
				<xs:element ref="Float"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="metadonnees">
		<xs:complexType>
			<xs:all>
				<xs:element ref="uid" maxOccurs="1" minOccurs="0"/>
				<xs:element ref="title"/>
				<xs:element ref="description"/>
				<xs:element ref="author"/>
				<xs:element ref="goal"/>
				<xs:element ref="target"/>
			</xs:all>
		</xs:complexType>
	</xs:element>
	<xs:element name="comp">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:enumeration value="equalTo"/>
				<xs:enumeration value="notEqualTo"/>
				<xs:enumeration value="lessThan"/>
				<xs:enumeration value="greaterThan"/>
				<xs:enumeration value="lessOrEqualThan"/>
				<xs:enumeration value="greaterOrEqualThan"/>
				<xs:enumeration value="allEqualTo"/>
				<xs:enumeration value="allNotEqualTo"/>
				<xs:enumeration value="allLessThan"/>
				<xs:enumeration value="allGreaterThan"/>
				<xs:enumeration value="allLessOrEqualThan"/>
				<xs:enumeration value="allGreaterOrEqualThan"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<xs:element name="source">
		<xs:complexType mixed="true">
			<xs:choice minOccurs="0">
				<xs:element ref="Observer"/>
				<xs:element name="URL" type="xs:string"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="UserChoice">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="label" type="xs:string"/>
			</xs:sequence>
			<xs:attribute name="id" type="xs:string" use="optional"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="TimeLimit">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="delay" type="xs:integer"/>
			</xs:sequence>
			<xs:attribute name="id" type="xs:string" use="optional"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="Float" type="xs:float"/>
	<xs:element name="Condition">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="laPosition"/>
				<xs:element ref="comp"/>
				<xs:element ref="val"/>
			</xs:sequence>
			<xs:attribute name="id" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="ExprConditionnelle">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="exprCond"/>
				<xs:sequence>
					<xs:element maxOccurs="unbounded" ref="Condition"/>
				</xs:sequence>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="si">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ExprConditionnelle"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="alors">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="Interaction"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="sinon">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="Interaction"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="destinataires">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" minOccurs="0"
						name="role" type="xs:string"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="destinateurs">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" name="role" type="xs:string"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Enceinte">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="title"/>
				<xs:element ref="description"/>
				<xs:element minOccurs="0" ref="source"/>
				<xs:element maxOccurs="unbounded" minOccurs="0" ref="Enceinte"/>
			</xs:sequence>
			<xs:attribute name="id" type="xs:string" use="required"/>
			<xs:attribute ref="kindOfEnceinte" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="Observer">
		<xs:complexType mixed="true">
			<xs:sequence>
				<xs:element maxOccurs="unbounded" minOccurs="0" ref="param"/>
			</xs:sequence>
			<xs:attribute name="id" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="Position">
		<xs:complexType>
			<xs:choice maxOccurs="unbounded">
				<xs:element ref="title" maxOccurs="1" minOccurs="1"/>
				<xs:element maxOccurs="unbounded" minOccurs="1" ref="sur"/>
				<xs:element maxOccurs="unbounded" minOccurs="1" ref="de"/>
				<xs:element minOccurs="0" maxOccurs="1"  ref="portee"/>
				<xs:element minOccurs="0"  maxOccurs="1" ref="valeur"/>
			</xs:choice>
			<xs:attribute name="id" type="xs:string" use="required"/>
			<xs:attribute ref="partition" use="optional"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="portee">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:enumeration value="activite"/>
				<xs:enumeration value="scenario"/>
				<xs:enumeration value="infrastructure"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<xs:element name="positions">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" minOccurs="0" ref="Position"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="enceintes">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="Enceinte"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Interaction">
		<xs:complexType>
			<xs:all>
				<xs:element ref="action"/>
				<xs:element ref="dans"/>
				<xs:element ref="destinateurs"/>
				<xs:element ref="destinataires"/>
				<xs:element ref="results"/>
				<xs:element ref="startOn" minOccurs="1" maxOccurs="1"/>
				<xs:element ref="terminateOn" minOccurs="1" maxOccurs="1"/>
			</xs:all>
			<xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="interactions">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="Interaction"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="result">
		<xs:complexType>
			<xs:choice>
				<xs:element maxOccurs="unbounded" minOccurs="0" ref="Enceinte"/>
				<xs:element maxOccurs="unbounded" minOccurs="0" ref="Position"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="results">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" minOccurs="0" ref="result"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="roles">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" minOccurs="0" ref="Role"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Role">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="title" type="xs:string"/>
				<xs:element maxOccurs="unbounded" minOccurs="0" ref="Role"/>
			</xs:sequence>
			<xs:attribute name="id" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="Rule">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="si"/>
				<xs:element minOccurs="0" ref="alors"/>
				<xs:element minOccurs="0" ref="sinon"/>
			</xs:sequence>
			<xs:attribute name="id" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="rules">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" minOccurs="0" ref="Rule"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="terminateOn">
		<xs:complexType>
			<xs:sequence>
				<xs:element minOccurs="0" ref="Rule"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="startOn">
		<xs:complexType>
			<xs:sequence>
				<xs:element minOccurs="0" ref="Rule"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Structure">
		<xs:complexType>
			<xs:choice maxOccurs="unbounded">
				<xs:element ref="interaction_id"/>
				<xs:element ref="Structure"/>
				<xs:element ref="startOn" maxOccurs="1" minOccurs="1"/>
				<xs:element ref="terminateOn" maxOccurs="1" minOccurs="0"/>
			</xs:choice>
			<xs:attribute name="id" type="xs:string" use="required"/>
			<xs:attribute name="title" type="xs:string" use="optional"/>
			<xs:attribute name="numberToSelect" type="xs:integer" use="optional"/>
			<xs:attribute name="numberToRepeat" type="xs:integer" use="optional"/>
			<xs:attribute ref="kindOfStructure"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="structures">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="Structure"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>
