<?xml version="1.0" encoding="UTF-8"?>
<!--W3C Schema generated by XML Spy v4.4 U (http://www.xmlspy.com)-->
<xs:schema xmlns:nsat="http://www.nexus.uni-stuttgart.de/1.0/NSAT" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
	<xs:import namespace="http://www.nexus.uni-stuttgart.de/1.0/NSAT" schemaLocation="NexusStandardAttributeTypes.xsd"/>
	<!-- Navigation Parameter Language -->
	<xs:element name="npl">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="query"/>
				<xs:element ref="result"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<!-- Query Part -->
	<xs:element name="query">
		<xs:complexType>
			<xs:choice>
				<xs:element ref="shortest_route"/>
				<xs:element ref="best_order"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<!-- shortest route or best order query -->
	<xs:element name="shortest_route">
		<xs:complexType>
			<xs:sequence>
				<xs:choice>
					<xs:element ref="start"/>
					<xs:element ref="loc_start"/>
				</xs:choice>
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="intermediate"/>
					<xs:element ref="loc_intermediate"/>
				</xs:choice>
				<xs:element ref="end"/>
				<xs:element ref="locomotion" maxOccurs="unbounded"/>
				<xs:element ref="time" minOccurs="0"/>
				<xs:element ref="criterion" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="best_order">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="start"/>
				<xs:element ref="intermediate" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="end" minOccurs="0"/>
				<xs:element ref="locomotion" maxOccurs="unbounded"/>
				<xs:element ref="time" minOccurs="0"/>
				<xs:element ref="criterion" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<!-- defining positions (start, intermediate, end) -->
	<!-- positions without locomotion definitions -->
	<xs:element name="start">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="position"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="intermediate">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="position"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="end">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="position"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<!-- positions including locomotion definitions -->
	<xs:element name="loc_start">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="start"/>
				<xs:element ref="locomotion" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="loc_intermediate">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="intermediate"/>
				<xs:element ref="locomotion" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<!-- positions given by addresses, geographic points etc. -->
	<xs:element name="position">
		<xs:complexType>
			<xs:choice>
				<xs:element ref="nol"/>
				<xs:element ref="address"/>
				<xs:element ref="point"/>
				<xs:element ref="name"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="name" type="xs:string"/>
	<xs:element name="nol" type="nsat:NexusObjectLocatorType"/>
	<xs:element name="point" type="nsat:NexusPointType"/>
	<xs:element name="address">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="street" type="xs:string"/>
				<xs:element name="number" type="xs:string"/>
				<xs:element name="city" type="xs:string"/>
				<xs:element name="zipCode" type="xs:string"/>
				<xs:element name="country" type="xs:string"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<!-- defining locomotion -->
	<xs:element name="locomotion">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="loc_type"/>
				<xs:element ref="loc_property" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="loc_use"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="loc_type" type="xs:string"/>
	<xs:element name="loc_property">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="name" type="xs:string"/>
				<xs:element name="value" type="xs:string"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="loc_use">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:enumeration value="true"/>
				<xs:enumeration value="false"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<!-- defining time -->
	<xs:element name="time">
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="nsat:NexusTimeType">
					<xs:attribute name="start_end" use="required">
						<xs:simpleType>
							<xs:restriction base="xs:string">
								<xs:enumeration value="start"/>
								<xs:enumeration value="end"/>
							</xs:restriction>
						</xs:simpleType>
					</xs:attribute>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<!-- defining criterions for best routes -->
	<xs:element name="criterion" type="xs:string"/>
	<!-- Result part -->
	<xs:element name="result">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="format" type="xs:string"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>
