<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by Nick js Knowles (Kizoom Ltd.) -->
<xsd:schema targetNamespace="http://www.journeyweb.org.uk/schemas/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.journeyweb.org.uk/schemas/" elementFormDefault="qualified" attributeFormDefault="unqualified" version="3.0a" id="JourneyWeb">
	<xsd:annotation>
		<xsd:appinfo xmlns:gms="http://www.govtalk.gov.uk/CM/gms">
			<Metadata xmlns="http://www.govtalk.gov.uk/CM/gms-xs">
				<Aggregation>main schema</Aggregation>
				<Audience>e-service developers</Audience>
				<Contributor>Revised for version 3.0 Kizoom Limited, by Adam Cohen Rose, Nicholas Knowles. [mailto:schemer@kizoom.com]</Contributor>
				<Contributor>Specialist advice for version 3.0. Matthew Frances, Action Information Management systems. [mailto:mfrancis@aimltd.co.uk]</Contributor>
				<Contributor>Overall direction and Advice from Roger Slevin [Roger.Slevin@dft.gsi.gov.uk]</Contributor>
				<Coverage>United Kingdom</Coverage>
				<Creator>Created as W3C .xsd schema by Atkins Global as 2.1 XML schema,  Richard Shaw, Mike Ness.  mailto:richard.shaw@atkinsglobal.com</Creator>
				<Date>
					<Created>2003-05-20</Created>
				</Date>
				<Date>
					<Modified>2003-07-30</Modified>
				</Date>
				<Date>
					<Modified>2003-12-03</Modified>
				</Date>
				<Description>
					<p>JourneyWeb is an XML protocol to allow remote journey planning engines to communicate in order to provide multimodal journeys spanning different regions.
The protocol is a UK national de facto standard sponsored by the UK Department of Transport and is being used in the Transport Direct Portal project to provide contiguous distributed journey planning for the whole of the UK.  It builds on two other standards NaPTAN and the NPTG gazetteer.</p>
					<p>JourneyWeb allows two or more journey planning engines with knowledge of different areas or transport modes to carry out distributed journey planning, that is to dynamically query data from both servers and use the results to build up composite journeys that span the respective areas covered by the respective engines.</p>
					<p>JourneyWeb is a request response protocol with messages to query the following:</p>
					<ul>
						<li>POINTS: The remote stops for a NPTG locality or coordinate.</li>
						<li>JOURNEYS:  Journeys between combinations of stops.</li>
						<li>LEG DETAILS:  Further Details about journey legs.</li>
						<li>SERVICES:  The services covered by a remote timetable.</li>
						<li>OPERATORS: The operators supported by the remote journey planner.</li>
						<li>TIMETABLES:  A matrix of timetable data for remote services, suitable for producing columnar timetables.</li>
						<li>STOPEVENTS:  Departures for a stop at a specified time.</li>
					</ul>
					<p>JourneyWeb results may optionally include map plotting data, disabled access information. </p>
				</Description>
				<Format>
					<MediaType>text/xml</MediaType>
					<Syntax>http://www.w3.org/2001/XMLSchema</Syntax>
					<Description>XML schema, W3C Recommendation 2001</Description>
				</Format>
				<Identifier>http://www.journeyweb.org.uk/schemas/3.0/JourneyWeb.xsd</Identifier>
				<Language>[ISO 639-2/B] ENG</Language>
				<Publisher>Department for Transport, Great Minster House, 76 Marsham Street, London SW1P 4DR</Publisher>
				<Relation>
					<Requires>http://www.journeyweb.org.uk/schemas/3.0/ErrorHandling.xsd</Requires>
				</Relation>
				<Relation>
					<HasPart>ErrorHandling</HasPart>
				</Relation>
				<Rights>Unclassified
                               <Copyright>Crown Copyright 2000-2004.</Copyright>
				</Rights>
				<Source>
  * JourneyWeb concept Originally developed in 1997 by G. P. Fingerle as part of his PhD thesis (final publication in July, 2001).
  * Revised as Version 1.1  Nov 10 2000 by A. C. Lock and G. P. Fingerle.
  * Revised as Version 1.1.1  December 12, 2001 by G. P. Fingerle.
  * Revised as Version 2.0 schema   December 12, 2002 by Richard Shaw, Mike Ness WS Atkins.
  * Revised as Version 2.1 schema   May 20, 2002 by Richard Shaw, Mike Ness WS Atkins.
                </Source>
				<Status> Version 3.0 Draft for approval </Status>
				<Subject>
					<Category> Arts, recreation and travel, Tourism, Travel (tourism), Transport,
Air transport,  Aircraft (civilian), Airports,  Aviation,
Ports and maritime transport, Ferries (marine), Maritime transport, Sea transport, Water transport (sea-going)
Public transport, Bus services, Coach services, Bus stops and stations
Rail transport, Infrastructure (railways), Railway stations and track, Train services, Underground trains
Roads and road transport, Car parks, Cars (road vehicles), Cycling (transport), Highways,  Infrastructure (roads), Minicabs, Motorcycles,
Parking, Pavements, Road signs,  Taxis,  Vehicles (road use), Walking (as transport),
Access for disabled people, Mobility for the disabled
                               </Category>
					<Project>Transport Direct</Project>
				</Subject>
				<Title>JourneyWeb, an XML protocol for distributed journey planning.</Title>
				<Type>Standard</Type>
			</Metadata>
		</xsd:appinfo>
	</xsd:annotation>
	<xsd:include schemaLocation="ErrorHandling.xsd"/>
	<xsd:element name="JourneyWeb">
		<xsd:annotation>
			<xsd:documentation>@SchemaVersion
Only responses valid for the requested version of the schema will be returned.</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:choice>
				<xsd:element name="Request">
					<xsd:annotation>
						<xsd:documentation>@Language (optional) ISO639 value.
@SuppressNames (optional).

Contains one or more specific requests. </xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="PointsRequest" type="PointsRequestStructure" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>@RequestID
Request the points for a remote locality or X,Y.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="JourneysRequest" type="JourneysRequestStructure" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>@RequestID
Request a journey between A and B.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="LegDetailsRequest" type="LegDetailsRequestStructure" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>@RequestID
Request more information about a specific leg.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="StopTimetableRequest" type="StopTimetableRequestStructure" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>@RequestID
Request a composite timetable of all direct services from A to B.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="ServiceTimetableRequest" type="ServiceTimetableRequestStructure" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>@RequestID
Request service specific timetables (can be composite).</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="StopEventsRequest" type="StopEventsRequestStructure" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>@RequestID
Request events at a stop of group of stops.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="ServicesRequest" type="ServicesRequestStructure" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>@RequestID
Search for services and timetable details.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="OperatorsRequest" type="OperatorsRequestStructure" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>@RequestID
Request a list of supported operators.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
						</xsd:sequence>
						<xsd:attribute name="Language" type="LanguageEnumeration" use="optional" default="EN"/>
						<xsd:attribute name="SuppressNames" type="xsd:boolean" use="optional" default="false"/>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="Response">
					<xsd:annotation>
						<xsd:documentation>@DataDate.
@DataName (optional).

Contains one or more responses.</xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:sequence>
							<xsd:group ref="MessageGroup"/>
							<xsd:element name="PointsResponse" type="PointsResponseStructure" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>@RequestID
Contains the points for the specified RequestID.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="JourneysResponse" type="JourneysResponseStructure" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>@RequestID
Contains the journeys for the specified request ID.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="LegDetailsResponse" type="LegDetailsResponseStructure" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>@RequestID
Contains journey leg details for the the specified RequestID.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="TimetableResponse" type="TimetableResponseStructure" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>@RequestID
Contains the timetable for the specified RequestID.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="StopEventsResponse" type="StopEventsResponseStructure" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>@RequestID
Contains the stop events for the specified RequestID</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="ServicesResponse" type="ServicesResponseStructure" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>@RequestID
Contains the services for the specified RequestID.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="OperatorsResponse" type="OperatorsResponseStructure" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>@RequestID
Contains the operators for the specified RequestID.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
						</xsd:sequence>
						<xsd:attribute name="DataDate" type="xsd:date" use="required">
							<xsd:annotation>
								<xsd:documentation>Date when the source database was last updated.</xsd:documentation>
							</xsd:annotation>
						</xsd:attribute>
						<xsd:attribute name="DataName" type="xsd:string" use="optional">
							<xsd:annotation>
								<xsd:documentation>Optional name of the source database.</xsd:documentation>
							</xsd:annotation>
						</xsd:attribute>
					</xsd:complexType>
				</xsd:element>
			</xsd:choice>
			<xsd:attribute name="SchemaVersion" type="xsd:NMTOKEN" use="required" fixed="3.0a">
				<xsd:annotation>
					<xsd:documentation>The version of the schema that the JourneyWeb instance document was written against. This attribute conforms with e-GIF guidance.</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>
	<!-- ======================================================================= -->
	<!-- Request Types -->
	<xsd:complexType name="PointsRequestStructure">
		<xsd:annotation>
			<xsd:documentation>Type for JourneyWeb Points Request.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:element name="LocalityID" type="LocalityIDType">
				<xsd:annotation>
					<xsd:documentation>The locality for which points are being requested.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Geocode" type="GeocodeStructure">
				<xsd:annotation>
					<xsd:documentation>@Precision (optional)
A co-ordinate for which nearby points should be returned. The range of the search is undefined.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:choice>
		<xsd:attribute name="RequestID" type="xsd:string" use="required"/>
	</xsd:complexType>
	<xsd:complexType name="JourneysRequestStructure">
		<xsd:annotation>
			<xsd:documentation>Type for JourneyWeb Journeys Request.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="Origin" type="OriginDestinationRequestStructure">
				<xsd:annotation>
					<xsd:documentation>The places used for the origin.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:choice>
				<xsd:element name="Via" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>Via place for passing only (no stopover times).</xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="Place" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>The via only has to go via one of these places e.g. if this defined all the bays in a bus station the journey only has to go via one of the bays.</xsd:documentation>
								</xsd:annotation>
								<xsd:complexType>
									<xsd:sequence>
										<xsd:element name="ID" type="PlaceIDRequestStructure">
											<xsd:annotation>
												<xsd:documentation>Identifier of a place</xsd:documentation>
											</xsd:annotation>
										</xsd:element>
									</xsd:sequence>
								</xsd:complexType>
							</xsd:element>
							<xsd:element name="GivenName" type="xsd:string" minOccurs="0">
								<xsd:annotation>
									<xsd:documentation>The name of the via to be used in the results. Allows results to be given using the name that the user has selected instead of a name select from NaPTAN (particularly useful with multi-lingual places). Must be  given when a geocode is used as the via. </xsd:documentation>
								</xsd:annotation>
							</xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="NotVia" minOccurs="0" maxOccurs="unbounded">
					<xsd:annotation>
						<xsd:documentation>Not via places to avoid.</xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="Place" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>The resulting journey must not stop at any of these points.</xsd:documentation>
								</xsd:annotation>
								<xsd:complexType>
									<xsd:sequence>
										<xsd:element name="ID" type="PlaceIDRequestStructure"/>
									</xsd:sequence>
								</xsd:complexType>
							</xsd:element>
							<xsd:element name="GivenName" type="xsd:string" minOccurs="0">
								<xsd:annotation>
									<xsd:documentation>The name of the not-via to be used in the results. Allows results to be given using the name that the user has selected instead of a name select from NaPTAN (particularly useful with multi-lingual places). Must be  given when a geocode is used as the not via. </xsd:documentation>
								</xsd:annotation>
							</xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
			</xsd:choice>
			<xsd:element name="Destination" type="OriginDestinationRequestStructure">
				<xsd:annotation>
					<xsd:documentation>The places used for the destination.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="ArrDep" type="ArriveDepartEnumeration">
				<xsd:annotation>
					<xsd:documentation>Whether the request is an arrive-before or depart-after request.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Range">
				<xsd:annotation>
					<xsd:documentation>The number and extent of journeys to return.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:complexContent>
						<xsd:extension base="RangeStructure">
							<xsd:choice minOccurs="0">
								<xsd:element name="EachOrigin" type="xsd:boolean">
									<xsd:annotation>
										<xsd:documentation>The requested journeys are returned from each origin place to any of the destination places.</xsd:documentation>
									</xsd:annotation>
								</xsd:element>
								<xsd:element name="EachDestination" type="xsd:boolean">
									<xsd:annotation>
										<xsd:documentation>The requested journeys are returned from any origin place to each of the destination places.</xsd:documentation>
									</xsd:annotation>
								</xsd:element>
							</xsd:choice>
						</xsd:extension>
					</xsd:complexContent>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="Algorithm" type="AlgorithmEnumeration" default="default" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Type of search algorithm (default is default)</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="WalkSpeed" type="SpeedEnumeration" default="normal" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Preferred walk speed (default normal).</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="MaxWalkDistance" type="DistanceType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Maximum walking distance tolerated.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="InterchangeSpeed" type="SpeedEnumeration" default="normal" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Preferred interchange speed (default normal).</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:sequence>
				<xsd:annotation>
					<xsd:documentation>Options restricting the available routes.</xsd:documentation>
				</xsd:annotation>
				<xsd:element name="LimitedAccessibility" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>Specifies if routes with limited accessibility interchanges should be requested.  Defaults to no accessibility exclusions.</xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="ExcludeHazard" type="AccessibilityHazardEnumeration" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>Requests a journey without the specified accessibility hazard.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="Modes" type="ModesRequestStructure" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>@Exclude.  default false: exclude specified values; true, include specified values.
Which modes of transport to include in request. If omitted then all modes are to be included.</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element name="Operators" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>@Exclude.  default false: exclude specified values; true, include specified values.
The operators to include/exclude from the calculation.  If omitted then all operators may be included.</xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="OperatorCode" type="OperatorCodeType" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>Unique code of an operator  to include or exclude.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
						</xsd:sequence>
						<xsd:attribute name="Exclude" type="xsd:boolean" use="optional" default="false"/>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="Services" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>@Exclude.  default false: exclude specified values; true, include specified values.
The services to include/exclude from the calculation.  If omitted all services may be included.</xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="Service" type="ServiceRequestStructure" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>Service to be included or excluded.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
						</xsd:sequence>
						<xsd:attribute name="Exclude" type="xsd:boolean" use="optional" default="false"/>
					</xsd:complexType>
				</xsd:element>
			</xsd:sequence>
			<xsd:element name="LegDetails" type="LegDetailsStructure" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Options controlling level of detail returned.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="RequestID" type="xsd:string" use="required"/>
	</xsd:complexType>
	<xsd:complexType name="LegDetailsRequestStructure">
		<xsd:annotation>
			<xsd:documentation>Type for JourneyWeb LegDetails Request.</xsd:documentation>
		</xsd:annotation>
		<xsd:all>
			<xsd:element name="LegIDs">
				<xsd:annotation>
					<xsd:documentation>Legs for which details are requested.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="LegID" type="xsd:string" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>Identifies a leg for which details are to be returned.</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="LegDetails" type="LegDetailsStructure">
				<xsd:annotation>
					<xsd:documentation>Options controlling level of detail returned.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:all>
		<xsd:attribute name="RequestID" type="xsd:string" use="required"/>
	</xsd:complexType>
	<xsd:complexType name="StopTimetableRequestStructure">
		<xsd:annotation>
			<xsd:documentation>Type for JourneyWeb StopTimetable Request.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="Origin">
				<xsd:annotation>
					<xsd:documentation>Start place for the timetable request.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Place" type="PlaceIDRequestStructure" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>A choice of places for the origin.</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="GivenName" type="xsd:string" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>The name of the origin to be shown in the timetable description. Allows results to be given using the name that the user has selected instead of a name select from NaPTAN (particularly useful with multi-lingual places). Must be  given when a geocode is used as the origin. </xsd:documentation>
							</xsd:annotation>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="Destination">
				<xsd:annotation>
					<xsd:documentation>Destination point for timetable.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Place" type="PlaceIDRequestStructure" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>A choice of places for the destination.</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="GivenName" type="xsd:string" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>The name of the destination to be shown in the timetable description. Allows results to be given using the name that the user has selected instead of a name select from NaPTAN (particularly useful with multi-lingual places). Must be  given when a geocode is used as the destination. </xsd:documentation>
							</xsd:annotation>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:group ref="TimetableRequestParameters"/>
			<xsd:element name="Modes" type="ModesRequestStructure" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>@Exclude.  default false: exclude specified values; true, include specified values.
Modes of transport  for which timetables are to be returned.  If omitted then all modes are to be included.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Operators" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>@Exclude.  default false: exclude specified values; true, include specified values.The operators to include/exclude from the calculation. If omitted then all operators are possible.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="OperatorCode" type="OperatorCodeType" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>The unique operator code when available.</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
					</xsd:sequence>
					<xsd:attribute name="Exclude" type="xsd:boolean" use="optional" default="false"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="Services" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>@Exclude.  default false: exclude specified values; true, include specified values.
The services to include/exclude from the calculation. If omitted all services are possible.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Service" type="ServiceRequestStructure" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>A transport service run by an operator.</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
					</xsd:sequence>
					<xsd:attribute name="Exclude" type="xsd:boolean" use="optional" default="false"/>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="RequestID" type="xsd:string" use="required"/>
	</xsd:complexType>
	<xsd:complexType name="ServiceTimetableRequestStructure">
		<xsd:annotation>
			<xsd:documentation>Type for JourneyWeb ServiceTimetable Request.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="TimetableDescriptor" maxOccurs="unbounded">
				<xsd:annotation>
					<xsd:documentation>The unique description of each service that should be output in the composite timetable.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:choice>
						<xsd:element name="Service" type="UniqueServiceStructure">
							<xsd:annotation>
								<xsd:documentation>The minimum required to uniquely identify a service.</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:sequence>
							<xsd:element name="PrivateID" type="xsd:string">
								<xsd:annotation>
									<xsd:documentation>A private service ID that only has meaning to the remote server.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="Direction" type="DirectionType" minOccurs="0">
								<xsd:annotation>
									<xsd:documentation>Only needed when PrivateID does not give a unique service.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
						</xsd:sequence>
					</xsd:choice>
				</xsd:complexType>
			</xsd:element>
			<xsd:group ref="TimetableRequestParameters"/>
			<xsd:element name="IncludeSchematic" type="xsd:boolean" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Whether to include a URL to a schematic map of the service (if available).</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="RequestID" type="xsd:string" use="required"/>
	</xsd:complexType>
	<xsd:complexType name="StopEventsRequestStructure">
		<xsd:annotation>
			<xsd:documentation>Type for JourneyWeb StopEvents Request.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="NaPTANID" type="NaPTANIDType" maxOccurs="unbounded">
				<xsd:annotation>
					<xsd:documentation>The stops that events are requested for.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="StartTime" type="xsd:dateTime" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Time and date of first event (default now).</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="ArrDep" type="EventArriveDepartEnumeration" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Return arrival, departures or all (default all)</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Range" type="RangeStructure" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>The number and extent of events to return. default 24 hours.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="FirstServiceEventOnly" type="xsd:boolean" default="false" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Whether to return only the first event of each service. (default false, i.e return all).</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="IncludeIntermediateStops" type="IntermediateStopsRequestEnumeration" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Which types of intermediate stops are to be returned, 'all,' 'before', 'leg', etc (default none).</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="RealTime" type="xsd:boolean" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Whether real-time information should be returned (default false, i.e. omit real-time data).</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Modes" type="ModesRequestStructure" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>@Exclude.  default false: exclude specified modes. true, include specified modes.
The transport modes for which stop events are to be returned. If omitted, include all modes.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Filter" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Specifies criteria for omitting services from the response.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Operators" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>@Exclude.  default false: exclude specified values; true, include specified values. The operators to include/exclude from the calculation. If omitted all operators are to be included.</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element name="OperatorCode" type="OperatorCodeType" maxOccurs="unbounded"/>
								</xsd:sequence>
								<xsd:attribute name="Exclude" type="xsd:boolean" use="optional" default="false"/>
							</xsd:complexType>
						</xsd:element>
						<xsd:element name="Origin" minOccurs="0" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>@Actual. default false: exclude specified values; true, include specified values.Only return services that have previously passed one to these points (doesn't have to be the service origin unless actual = true). If omitted, do not filter by origin.</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element name="NaPTANID" type="NaPTANIDType">
										<xsd:annotation>
											<xsd:documentation>NaPTAN stop identifier of an origin.</xsd:documentation>
										</xsd:annotation>
									</xsd:element>
								</xsd:sequence>
								<xsd:attribute name="Actual" type="xsd:boolean" use="optional" default="false"/>
							</xsd:complexType>
						</xsd:element>
						<xsd:element name="Destination" minOccurs="0" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>@Actual.  default false: exclude specified values; true, include specified values. Only return services that will go on to pass one to these points (doesn't have to be the service destination unless actual = true). If omitted, do not filter by destination.</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element name="NaPTANID" type="NaPTANIDType">
										<xsd:annotation>
											<xsd:documentation>NaPTAN stop identifier of a destination </xsd:documentation>
										</xsd:annotation>
									</xsd:element>
								</xsd:sequence>
								<xsd:attribute name="Actual" type="xsd:boolean" use="optional" default="false"/>
							</xsd:complexType>
						</xsd:element>
						<xsd:element name="Services" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>@Exclude.  default false: exclude specified values; true, include specified values.
The services to include/exclude from the calculation. If omitted include all services.</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element name="Service" type="ServiceRequestStructure" maxOccurs="unbounded">
										<xsd:annotation>
											<xsd:documentation>Service to be included or excluded.</xsd:documentation>
										</xsd:annotation>
									</xsd:element>
								</xsd:sequence>
								<xsd:attribute name="Exclude" type="xsd:boolean" use="optional" default="false"/>
							</xsd:complexType>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="RequestID" type="xsd:string" use="required"/>
	</xsd:complexType>
	<xsd:complexType name="ServicesRequestStructure">
		<xsd:annotation>
			<xsd:documentation>Type for JourneyWeb Services Request.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="OperatorCode" type="OperatorCodeType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Identifies the operator for which services are to be returned.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="ServiceNumber" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>@BeginWith default false; use whole service number. true, all services that begin with the specified string will be returned e.g. begin with 1 would return services 1, 11, 105, X1, X15, etc
Identifies service to be returned.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:simpleContent>
						<xsd:extension base="ServiceNumberType">
							<xsd:attribute name="BeginWith" type="xsd:boolean" use="optional" default="false"/>
						</xsd:extension>
					</xsd:simpleContent>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="Direction" type="DirectionType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>The direction of services which are to be returned.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Modes" type="ModesRequestStructure" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>@Exclude.  default false: exclude specified modes. true, include specified modes.
The transport modes for which services are to be returned. If omitted, include all modes.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="RequestID" type="xsd:string" use="required"/>
	</xsd:complexType>
	<xsd:complexType name="OperatorsRequestStructure">
		<xsd:annotation>
			<xsd:documentation>Type for JourneyWeb Operators Request.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="Modes" type="ModesRequestStructure" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>@Exclude.  default false: exclude specified modes. true, include specified modes.
The transport modes for which operators are to be returned. If omitted, include operators for all modes.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="RequestID" type="xsd:string" use="required"/>
	</xsd:complexType>
	<!-- ======================================================================= -->
	<!-- Response Types -->
	<xsd:complexType name="PointsResponseStructure">
		<xsd:annotation>
			<xsd:documentation>Type for JourneyWeb Points Response.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:group ref="MessageGroup"/>
			<xsd:element name="Points" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Unordered set of points.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Point" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>@TimingInformationPoint (optional). true. point is a timing point. false not a timing point, absent: unknown.
@LocalityCentre (optional). true point is a locality centre. false not a locality centre, absent: unknown. </xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:complexContent>
									<xsd:extension base="ReturnedPlaceStructure">
										<xsd:sequence>
											<xsd:element name="Distance" type="DistanceType" minOccurs="0">
												<xsd:annotation>
													<xsd:documentation>If the request was being made using a coordinate and  the distance to the stop has been calculated using a better method than crow-flies then this is the calculated distance to the point.</xsd:documentation>
												</xsd:annotation>
											</xsd:element>
										</xsd:sequence>
										<xsd:attribute name="LocalityCentre" type="xsd:boolean" use="optional"/>
									</xsd:extension>
								</xsd:complexContent>
							</xsd:complexType>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="RequestID" type="xsd:string" use="required"/>
	</xsd:complexType>
	<xsd:complexType name="JourneysResponseStructure">
		<xsd:annotation>
			<xsd:documentation>Type for JourneyWeb Journeys Response.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:group ref="MessageGroup"/>
			<xsd:element name="Journeys" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Contains the journeys that satisfied the request. If omitted then no journeys could be returned.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Journey" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>An individual journey fulfilling the constraints of the request.</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:sequence>
									<xsd:group ref="MessageGroup">
										<xsd:annotation>
											<xsd:documentation>Information about the journey returned. E.g. 'Does not satisfy accessibility requirements'.</xsd:documentation>
										</xsd:annotation>
									</xsd:group>
									<xsd:element name="Legs" type="LegCollectionStructure">
										<xsd:annotation>
											<xsd:documentation>The legs that make up the complete journey. In sequence of use. </xsd:documentation>
										</xsd:annotation>
									</xsd:element>
									<xsd:element name="Fares" minOccurs="0">
										<xsd:annotation>
											<xsd:documentation>Place holder for future development of fares. Defined at the journey level to accommodate fares that cover more than one leg of the journey.</xsd:documentation>
										</xsd:annotation>
										<xsd:complexType>
											<xsd:sequence>
												<xsd:any minOccurs="0" maxOccurs="unbounded"/>
											</xsd:sequence>
										</xsd:complexType>
									</xsd:element>
								</xsd:sequence>
							</xsd:complexType>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="RequestID" type="xsd:string" use="required">
			<xsd:annotation>
				<xsd:documentation>Unique identifier of a request.</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>
	<xsd:complexType name="LegDetailsResponseStructure">
		<xsd:annotation>
			<xsd:documentation>Type for JourneyWeb LegDetails Response.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:group ref="MessageGroup"/>
			<xsd:element name="Legs" type="LegCollectionStructure" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Contains an unordered list of the legs that were requested, to the appropriate level of detail.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="RequestID" type="xsd:string" use="required">
			<xsd:annotation>
				<xsd:documentation>Unique identifier of a request.</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>
	<xsd:complexType name="TimetableResponseStructure">
		<xsd:annotation>
			<xsd:documentation>Type for JourneyWeb StopTimetable Response.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:group ref="MessageGroup"/>
			<xsd:element name="Timetable" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>A service timetable.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Description" type="xsd:string">
							<xsd:annotation>
								<xsd:documentation>The title to use for the timetable. For stop to stop timetables it should include the stop names, e.g. London to Edinburgh.</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="FirstDate" type="xsd:date">
							<xsd:annotation>
								<xsd:documentation>The first date for which timetable has been generated.</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="Days" type="DaysOfOperationStructure">
							<xsd:annotation>
								<xsd:documentation>The days for which this timetable has been generated.</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:choice>
							<xsd:element name="LastDate" type="xsd:date">
								<xsd:annotation>
									<xsd:documentation>The last date for which this timetable has been generated.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="OpenEnded" type="xsd:boolean">
								<xsd:annotation>
									<xsd:documentation>Should only be used for pre-generated timetables, timetables generated on the fly should have a LastDate.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
						</xsd:choice>
						<xsd:element name="StopColumn">
							<xsd:annotation>
								<xsd:documentation>The stops that are shown in the first column of the timetable. The size of this list defines the number of rows. The stops must be in the order that they are to be displayed in. The same stop can be repeated (circular routes, and  composite timetables with different stopping patterns).</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element name="Stop" maxOccurs="unbounded">
										<xsd:annotation>
											<xsd:documentation>@Activity
@StopType</xsd:documentation>
										</xsd:annotation>
										<xsd:complexType>
											<xsd:complexContent>
												<xsd:extension base="ReturnedPlaceStructure">
													<xsd:attribute name="Activity" type="RowActivityEnumeration" use="optional" default="mixed"/>
													<xsd:attribute name="StopType" type="StopTypeEnumeration" use="optional" default="intermediate"/>
												</xsd:extension>
											</xsd:complexContent>
										</xsd:complexType>
									</xsd:element>
								</xsd:sequence>
							</xsd:complexType>
						</xsd:element>
						<xsd:element name="TimeColumn" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>@Num
The columns on the timetable. The must be in the order they are to be displayed.</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element name="Header">
										<xsd:annotation>
											<xsd:documentation>
Contains all details of the column. Service details are included her to support composite timetables e.g. stop to stop timetables.</xsd:documentation>
										</xsd:annotation>
										<xsd:complexType>
											<xsd:sequence>
												<xsd:element name="ServiceRef" type="xsd:IDREF">
													<xsd:annotation>
														<xsd:documentation>Reference to service details for this column.</xsd:documentation>
													</xsd:annotation>
												</xsd:element>
												<xsd:element name="DaysOfOperation" type="DaysOfOperationStructure" minOccurs="0">
													<xsd:annotation>
														<xsd:documentation>Days of operation if different to those specified in the service details.</xsd:documentation>
													</xsd:annotation>
												</xsd:element>
												<xsd:choice>
													<xsd:element name="NoteAbbreviation" type="xsd:string" minOccurs="0" maxOccurs="unbounded">
														<xsd:annotation>
															<xsd:documentation>The abbreviation of a note which is defined later in the schema.</xsd:documentation>
														</xsd:annotation>
													</xsd:element>
													<xsd:element name="Note" type="xsd:string" minOccurs="0" maxOccurs="unbounded">
														<xsd:annotation>
															<xsd:documentation>Notes if abbreviations are not being used.</xsd:documentation>
														</xsd:annotation>
													</xsd:element>
												</xsd:choice>
											</xsd:sequence>
										</xsd:complexType>
									</xsd:element>
									<xsd:choice>
										<xsd:choice maxOccurs="unbounded">
											<xsd:element name="Time">
												<xsd:annotation>
													<xsd:documentation>@TimingInformationPoint (optional)
@Activity (optional).
Used for a column of times.  Must be one for each stop. Activity only needed if row Activity is Mixed.</xsd:documentation>
												</xsd:annotation>
												<xsd:complexType>
													<xsd:simpleContent>
														<xsd:extension base="xsd:time">
															<xsd:attribute name="TimingInformationPoint" type="xsd:boolean" use="optional"/>
															<xsd:attribute name="Activity" type="StopActivityEnumeration" use="optional" default="pickUpAndSetDown"/>
														</xsd:extension>
													</xsd:simpleContent>
												</xsd:complexType>
											</xsd:element>
											<xsd:element name="NoTime" type="xsd:string"/>
										</xsd:choice>
										<xsd:element name="Label" type="xsd:string" maxOccurs="unbounded">
											<xsd:annotation>
												<xsd:documentation>Used for a column that includes text only e.g. frequency column. Must be a label for every stop.</xsd:documentation>
											</xsd:annotation>
										</xsd:element>
									</xsd:choice>
								</xsd:sequence>
								<xsd:attribute name="Num" type="xsd:int" use="required"/>
							</xsd:complexType>
						</xsd:element>
						<xsd:element name="Service" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>@Ref.
Details for the service references used in the columns.</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:complexContent>
									<xsd:extension base="ServiceResponseStructure">
										<xsd:attribute name="Ref" type="xsd:ID" use="required"/>
									</xsd:extension>
								</xsd:complexContent>
							</xsd:complexType>
						</xsd:element>
						<xsd:element name="Notes" minOccurs="0" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>General timetable notes or the notes to go with abbreviations used in the columns.</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element name="Abbreviation" type="xsd:string" minOccurs="0">
										<xsd:annotation>
											<xsd:documentation>If left blank then the note represents a general timetable note.</xsd:documentation>
										</xsd:annotation>
									</xsd:element>
									<xsd:element name="Note" type="xsd:string">
										<xsd:annotation>
											<xsd:documentation>The note that goes with the abbreviation.</xsd:documentation>
										</xsd:annotation>
									</xsd:element>
								</xsd:sequence>
							</xsd:complexType>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="RequestID" type="xsd:string" use="required"/>
	</xsd:complexType>
	<xsd:complexType name="StopEventsResponseStructure">
		<xsd:annotation>
			<xsd:documentation>Type for JourneyWeb StopEvents Response.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:group ref="MessageGroup"/>
			<xsd:element name="Events" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>The arrivals or departures at a stop.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Event" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>An arrival or departure at a stop.</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element name="Origin" minOccurs="0">
										<xsd:annotation>
											<xsd:documentation>@TimingInformationPoint.
The origin of this vehicle. Only omitted if the event occurs at the origin.</xsd:documentation>
										</xsd:annotation>
										<xsd:complexType>
											<xsd:complexContent>
												<xsd:extension base="ReturnedPlaceStructure">
													<xsd:sequence>
														<xsd:element name="TimetabledDepartureTime" type="xsd:dateTime" minOccurs="0">
															<xsd:annotation>
																<xsd:documentation>The timetabled departure time from the origin. If frequency based service then leave out - frequency is defined in stop below.</xsd:documentation>
															</xsd:annotation>
														</xsd:element>
														<xsd:group ref="RTDepartureTimeGroup"/>
													</xsd:sequence>
												</xsd:extension>
											</xsd:complexContent>
										</xsd:complexType>
									</xsd:element>
									<xsd:element name="PreviousIntermediate" minOccurs="0" maxOccurs="unbounded">
										<xsd:annotation>
											<xsd:documentation>@TimingInformationPoint
The stops between the origin and the requested stop. Only returned if requested.</xsd:documentation>
										</xsd:annotation>
										<xsd:complexType>
											<xsd:complexContent>
												<xsd:extension base="ReturnedPlaceStructure">
													<xsd:sequence>
														<xsd:group ref="IntermediateTimeGroup"/>
													</xsd:sequence>
												</xsd:extension>
											</xsd:complexContent>
										</xsd:complexType>
									</xsd:element>
									<xsd:element name="Stop">
										<xsd:annotation>
											<xsd:documentation>@TimingInformationPoint
The stop where the event occurs.</xsd:documentation>
										</xsd:annotation>
										<xsd:complexType>
											<xsd:complexContent>
												<xsd:extension base="ReturnedPlaceStructure">
													<xsd:sequence>
														<xsd:group ref="EventTimeGroup"/>
													</xsd:sequence>
												</xsd:extension>
											</xsd:complexContent>
										</xsd:complexType>
									</xsd:element>
									<xsd:element name="OnwardIntermediate" minOccurs="0" maxOccurs="unbounded">
										<xsd:annotation>
											<xsd:documentation>@TimingInformationPoint
The stops between the requested stop and the destination. Only returned if requested.</xsd:documentation>
										</xsd:annotation>
										<xsd:complexType>
											<xsd:complexContent>
												<xsd:extension base="ReturnedPlaceStructure">
													<xsd:sequence>
														<xsd:group ref="IntermediateTimeGroup"/>
													</xsd:sequence>
												</xsd:extension>
											</xsd:complexContent>
										</xsd:complexType>
									</xsd:element>
									<xsd:element name="Destination" minOccurs="0">
										<xsd:annotation>
											<xsd:documentation>@TimingInformationPoint
The destination of this vehicle. Only omitted if the event occurs at the destination.</xsd:documentation>
										</xsd:annotation>
										<xsd:complexType>
											<xsd:complexContent>
												<xsd:extension base="ReturnedPlaceStructure">
													<xsd:sequence>
														<xsd:element name="TimetabledArrivalTime" type="xsd:dateTime" minOccurs="0">
															<xsd:annotation>
																<xsd:documentation>The timetabled arrival time at the destination.</xsd:documentation>
															</xsd:annotation>
														</xsd:element>
														<xsd:group ref="RTArrivalTimeGroup"/>
													</xsd:sequence>
												</xsd:extension>
											</xsd:complexContent>
										</xsd:complexType>
									</xsd:element>
									<xsd:element name="ServiceRef" type="xsd:IDREF">
										<xsd:annotation>
											<xsd:documentation>Reference to service details for this event</xsd:documentation>
										</xsd:annotation>
									</xsd:element>
								</xsd:sequence>
							</xsd:complexType>
						</xsd:element>
						<xsd:element name="Service" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>@Ref.
Details for the service references used in the stop events.</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:complexContent>
									<xsd:extension base="ServiceResponseStructure">
										<xsd:attribute name="Ref" type="xsd:ID" use="required"/>
									</xsd:extension>
								</xsd:complexContent>
							</xsd:complexType>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="RequestID" type="xsd:string" use="required"/>
	</xsd:complexType>
	<xsd:complexType name="ServicesResponseStructure">
		<xsd:annotation>
			<xsd:documentation>Type for JourneyWeb ServiceTimetable Response.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:group ref="MessageGroup"/>
			<xsd:element name="Services" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>A collection of services meeting the  request criteria.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Service" type="ServiceResponseStructure" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>Description of a transport service.</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="RequestID" type="xsd:string" use="required"/>
	</xsd:complexType>
	<xsd:complexType name="OperatorsResponseStructure">
		<xsd:annotation>
			<xsd:documentation>Type for JourneyWeb Operators Response.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:group ref="MessageGroup"/>
			<xsd:element name="Operators" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Transport service operators</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Operator" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>Transport service operator</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element name="Code" type="OperatorCodeType">
										<xsd:annotation>
											<xsd:documentation>A code Identifying Transport Service Operator</xsd:documentation>
										</xsd:annotation>
									</xsd:element>
									<xsd:element name="Name" type="xsd:string">
										<xsd:annotation>
											<xsd:documentation>The customer facing name of the operator.</xsd:documentation>
										</xsd:annotation>
									</xsd:element>
									<xsd:element name="Mode" type="VehicleModesEnumeration">
										<xsd:annotation>
											<xsd:documentation>Transport Mode of Service provided by operator</xsd:documentation>
										</xsd:annotation>
									</xsd:element>
								</xsd:sequence>
							</xsd:complexType>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="RequestID" type="xsd:string" use="required"/>
	</xsd:complexType>
	<!-- ======================================================================= -->
	<!-- Request element groups -->
	<xsd:group name="TimetableRequestParameters">
		<xsd:annotation>
			<xsd:documentation>Groups parameters controlling how the timetable should be returned.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="Date" type="xsd:date">
				<xsd:annotation>
					<xsd:documentation>The date for which the timetable is to be generated.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Generic" type="xsd:boolean">
				<xsd:annotation>
					<xsd:documentation>If true then the timetable that spans the specified date is returned. If false then the timetable for only the specified day is returned.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="TimingInformationPointsOnly" type="xsd:boolean" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Whether to only include timing information points in the response.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="EarliestDepartTime" type="xsd:time" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>The earliest departure time to include in the output.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="LatestDepartTime" type="xsd:time" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>The latest departure time to include in the output.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="FirstColumn" type="xsd:int" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>The number of the first column to return.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="MaxColumns" type="xsd:int" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>The maximum number of columns to return.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:group>
	<!-- ======================================================================= -->
	<!-- Journey time element groups -->
	<xsd:group name="FrequencyTimeGroup">
		<xsd:annotation>
			<xsd:documentation>Groups elements describing a service's frequency of operation.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:group ref="DurationWindowGroup"/>
			<xsd:element name="MaxDuration" type="DayTimeDurationType">
				<xsd:annotation>
					<xsd:documentation>The maximum duration for this leg of the journey.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Frequency" type="FrequencyStructure">
				<xsd:annotation>
					<xsd:documentation>The scheduled time gap between departures for a frequency-based service. Minimum and maximum time gaps can be specified as attributes.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="DurationWindowGroup">
		<xsd:annotation>
			<xsd:documentation>Groups elements describing a service's duration.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:sequence>
				<xsd:annotation>
					<xsd:documentation>The window of opportunity that the traveller has to perform this leg of the journey.</xsd:documentation>
				</xsd:annotation>
				<xsd:element name="WindowStartTime" type="xsd:dateTime" minOccurs="0"/>
				<xsd:element name="WindowEndTime" type="xsd:dateTime" minOccurs="0"/>
			</xsd:sequence>
			<xsd:element name="TypicalDuration" type="DayTimeDurationType">
				<xsd:annotation>
					<xsd:documentation>The typical duration of this leg of the journey.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:group>
	<!-- ======================================================================= -->
	<!-- Stop event times element groups -->
	<xsd:group name="EventTimeGroup">
		<xsd:annotation>
			<xsd:documentation>Groups arrival and departure times for an event at a stop.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:group ref="RTArrivalTimeGroup"/>
			<xsd:choice>
				<xsd:choice>
					<xsd:sequence>
						<xsd:element name="TimetabledArrivalTime" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>The time that the vehicle is timetabled to arrive.</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:simpleContent>
									<xsd:extension base="xsd:dateTime">
										<xsd:attribute name="TimingInformationPoint" type="xsd:boolean" use="optional"/>
									</xsd:extension>
								</xsd:simpleContent>
							</xsd:complexType>
						</xsd:element>
						<xsd:element name="TimetabledDepartureTime" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>The time that the vehicle is timetabled to depart.</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:simpleContent>
									<xsd:extension base="xsd:dateTime">
										<xsd:attribute name="TimingInformationPoint" type="xsd:boolean" use="optional"/>
									</xsd:extension>
								</xsd:simpleContent>
							</xsd:complexType>
						</xsd:element>
					</xsd:sequence>
					<xsd:element name="TimetabledTime" type="xsd:dateTime">
						<xsd:annotation>
							<xsd:documentation>Only to be used when arrival and departure time are the same.</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
				</xsd:choice>
				<xsd:element name="Frequency" type="FrequencyStructure">
					<xsd:annotation>
						<xsd:documentation>The scheduled time gap between departures for a frequency-based service. Minimum and maximum time gaps can be specified as attributes.</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
			</xsd:choice>
			<xsd:group ref="RTDepartureTimeGroup"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="OriginTimeGroup">
		<xsd:annotation>
			<xsd:documentation>Groups rea-time and scheduled departure times for an origin.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="TimetabledDepartureTime" type="xsd:dateTime"/>
			<xsd:group ref="RTDepartureTimeGroup"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="BoardTimeGroup">
		<xsd:annotation>
			<xsd:documentation>Groups timetabled and real-time times at stop where the journey leg starts.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:group ref="RTArrivalTimeGroup"/>
			<xsd:choice>
				<xsd:sequence>
					<xsd:element name="TimetabledArrivalTime" type="xsd:dateTime" minOccurs="0"/>
					<xsd:element name="TimetabledDepartureTime" type="xsd:dateTime"/>
				</xsd:sequence>
				<xsd:element name="TimetabledTime" type="xsd:dateTime">
					<xsd:annotation>
						<xsd:documentation>Only to be used when arrival and departure time are the same.</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
			</xsd:choice>
			<xsd:group ref="RTDepartureTimeGroup"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="IntermediateTimeGroup">
		<xsd:annotation>
			<xsd:documentation>Groups the vehicle at stop time elements.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:group ref="RTArrivalTimeGroup"/>
			<xsd:choice>
				<xsd:sequence>
					<xsd:element name="TimetabledArrivalTime" type="xsd:dateTime" minOccurs="0">
						<xsd:annotation>
							<xsd:documentation>Scheduled time of arrival of vehicle at stop.</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="TimetabledDepartureTime" type="xsd:dateTime" minOccurs="0">
						<xsd:annotation>
							<xsd:documentation>Scheduled time of departure of vehicle from stop.</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
				</xsd:sequence>
				<xsd:element name="TimetabledTime" type="xsd:dateTime">
					<xsd:annotation>
						<xsd:documentation>Only to be used when arrival and departure time are the same.</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
			</xsd:choice>
			<xsd:group ref="RTDepartureTimeGroup"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="AlightTimeGroup">
		<xsd:annotation>
			<xsd:documentation>Groups timetabled and real-time times at stop where the journey leg ends.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:group ref="RTArrivalTimeGroup"/>
			<xsd:choice>
				<xsd:sequence>
					<xsd:element name="TimetabledArrivalTime" type="xsd:dateTime"/>
					<xsd:element name="TimetabledDepartureTime" type="xsd:dateTime" minOccurs="0"/>
				</xsd:sequence>
				<xsd:element name="TimetabledTime" type="xsd:dateTime">
					<xsd:annotation>
						<xsd:documentation>Only to be used when arrival and departure time are the same.</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
			</xsd:choice>
			<xsd:group ref="RTDepartureTimeGroup"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="DestinationTimeGroup">
		<xsd:annotation>
			<xsd:documentation>Groups the arrival times at the destination.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="TimetabledArrivalTime" type="xsd:dateTime"/>
			<xsd:group ref="RTArrivalTimeGroup"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="RTArrivalTimeGroup">
		<xsd:annotation>
			<xsd:documentation>Groups real-time arrival times at stop.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:element name="RTEstimatedArrivalTime" type="xsd:dateTime" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Estimated time of arrival of vehicle at stop.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="RTRecordedArrivalTime" type="xsd:dateTime" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Actual time of arrival of vehicle at stop.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="RTDepartureTimeGroup">
		<xsd:annotation>
			<xsd:documentation>Groups real-time departure times at stop.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:element name="RTEstimatedDepartureTime" type="xsd:dateTime" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Estimated time of departure of vehicle from stop.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="RTRecordedDepartureTime" type="xsd:dateTime" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Actual time of departure of vehicle from stop.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:choice>
	</xsd:group>
	<!-- ======================================================================= -->
	<!-- Simple types -->
	<xsd:simpleType name="EmptyType">
		<xsd:annotation>
			<xsd:documentation>Empty type used to enforce empty content of indicator elements (such as those used in DaysOfOperationStructure).</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value=""/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="DistanceType">
		<xsd:annotation>
			<xsd:documentation>Distance (metres) as defined by http://www.ordnancesurvey.co.uk/xml/resource/units.xml#metres</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:nonNegativeInteger"/>
	</xsd:simpleType>
	<xsd:simpleType name="DayTimeDurationType">
		<xsd:annotation>
			<xsd:documentation>A restriction of W3C XML Schema's duration datatype that only allows durations to be measured in days, hours, minutes and seconds. This permits a total ordering of values.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:duration">
			<xsd:pattern value="P((\d+D)|T).*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="OperatorCodeType">
		<xsd:annotation>
			<xsd:documentation>Transport Operator identifier code type.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string"/>
	</xsd:simpleType>
	<xsd:simpleType name="ServiceNumberType">
		<xsd:annotation>
			<xsd:documentation>Type for stop identifiers.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string"/>
	</xsd:simpleType>
	<xsd:simpleType name="RegionType">
		<xsd:annotation>
			<xsd:documentation>Short code for region e.g. S (Scotland) SE (South East).</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="2"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="DirectionType">
		<xsd:annotation>
			<xsd:documentation>Direction taken (for example, eastbound, inbound, anti-clockwise).</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string"/>
	</xsd:simpleType>
	<xsd:simpleType name="NaPTANIDType">
		<xsd:annotation>
			<xsd:documentation>Identifier type for a NaPTAN stop</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[0-9]{3}0[A-Za-z0-9]{1,8}"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="LocalityIDType">
		<xsd:annotation>
			<xsd:documentation>Identifier type for a NaPTAN locality..</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[EN][0S][0-9]{6}"/>
		</xsd:restriction>
	</xsd:simpleType>
	<!-- ======================================================================= -->
	<!-- Enumerations for Requests -->
	<xsd:simpleType name="AlgorithmEnumeration">
		<xsd:annotation>
			<xsd:documentation>Types of journey planning optimisation algorithms supported by JourneyWeb.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="default"/>
			<xsd:enumeration value="fastest"/>
			<xsd:enumeration value="noChanges"/>
			<xsd:enumeration value="max1Change"/>
			<xsd:enumeration value="max2Changes"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="IntermediateStopsRequestEnumeration">
		<xsd:annotation>
			<xsd:documentation>Allowed values for stops.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="all"/>
			<xsd:enumeration value="before"/>
			<xsd:enumeration value="beforeAndLeg"/>
			<xsd:enumeration value="leg"/>
			<xsd:enumeration value="legAndAfter"/>
			<xsd:enumeration value="after"/>
			<xsd:enumeration value="none"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="LanguageEnumeration">
		<xsd:annotation>
			<xsd:documentation>Natural Languages supported by JourneyWeb.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="EN">
				<xsd:annotation>
					<xsd:documentation>English.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="CY">
				<xsd:annotation>
					<xsd:documentation>Welsh.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="GA">
				<xsd:annotation>
					<xsd:documentation>Irish.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="GD">
				<xsd:annotation>
					<xsd:documentation>Scots Gaelic.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="SpeedEnumeration">
		<xsd:annotation>
			<xsd:documentation>Quantised speed levels supported by JourneyWeb.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="slower3"/>
			<xsd:enumeration value="slower2"/>
			<xsd:enumeration value="slower1"/>
			<xsd:enumeration value="normal"/>
			<xsd:enumeration value="faster1"/>
			<xsd:enumeration value="faster2"/>
			<xsd:enumeration value="faster3"/>
		</xsd:restriction>
	</xsd:simpleType>
	<!-- ======================================================================= -->
	<!-- Accessiblity Enumerations -->
	<xsd:simpleType name="AccessibilityHazardEnumeration">
		<xsd:annotation>
			<xsd:documentation>Obstacles to accessibility.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="difficultSurface">
				<xsd:annotation>
					<xsd:documentation>For example, slippery surfaces or grids.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="escalator"/>
			<xsd:enumeration value="lift"/>
			<xsd:enumeration value="notIlluminated"/>
			<xsd:enumeration value="ramp"/>
			<xsd:enumeration value="stairs"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="ChangeOfLevelEnumeration">
		<xsd:annotation>
			<xsd:documentation>Kinds of vertical movement.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="up"/>
			<xsd:enumeration value="down"/>
			<xsd:enumeration value="noChange"/>
		</xsd:restriction>
	</xsd:simpleType>
	<!-- ======================================================================= -->
	<!-- Arrival/Departure Type Enumerations -->
	<xsd:simpleType name="ArriveDepartEnumeration">
		<xsd:annotation>
			<xsd:documentation>Allowed values for Arrival before or Departure after journey planning constraint</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="arrive"/>
			<xsd:enumeration value="depart"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="EventArriveDepartEnumeration">
		<xsd:annotation>
			<xsd:documentation>Allowed values for Arrival before or Departure after stop event constraint.</xsd:documentation>
		</xsd:annotation>
		<xsd:union memberTypes="ArriveDepartEnumeration">
			<xsd:simpleType>
				<xsd:restriction base="xsd:NMTOKEN">
					<xsd:enumeration value="all"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:union>
	</xsd:simpleType>
	<xsd:simpleType name="RowActivityEnumeration">
		<xsd:annotation>
			<xsd:documentation>Allowed values for timetable row activities.</xsd:documentation>
		</xsd:annotation>
		<xsd:union memberTypes="ArriveDepartEnumeration">
			<xsd:simpleType>
				<xsd:restriction base="xsd:NMTOKEN">
					<xsd:enumeration value="mixed"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:union>
	</xsd:simpleType>
	<!-- ======================================================================= -->
	<!-- Mapping Enumerations -->
	<xsd:simpleType name="MappingSystemEnumeration">
		<xsd:annotation>
			<xsd:documentation>Mapping systems that the client may use.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="TOID">
				<xsd:annotation>
					<xsd:documentation>Ordnance Survey MasterMap Topographical ID.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="OSODR">
				<xsd:annotation>
					<xsd:documentation>Ordnance Survey ROADS (previously OSCAR hence the O) Database Reference.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="NavTech">
				<xsd:annotation>
					<xsd:documentation>NavTech mapping reference.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="MDV">
				<xsd:annotation>
					<xsd:documentation>Mentz Datenverarbeitung GmbH
mapping reference http://www.mentzdv.de
.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="MappingSystemRequestEnumeration">
		<xsd:annotation>
			<xsd:documentation>Allows the client to request no mapping system information to be returned.</xsd:documentation>
		</xsd:annotation>
		<xsd:union memberTypes="MappingSystemEnumeration">
			<xsd:simpleType>
				<xsd:restriction base="xsd:NMTOKEN">
					<xsd:enumeration value="none"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:union>
	</xsd:simpleType>
	<xsd:simpleType name="GeocodeGridTypeEnumeration">
		<xsd:annotation>
			<xsd:documentation>Different grid systems (e.g. UK OS, Irish OS) that can be used to express Eastings and Northings.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="UKOS">
				<xsd:annotation>
					<xsd:documentation>Ordnance Survey UK grid with origin at bottom left of Sheet SV.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="IrishOS">
				<xsd:annotation>
					<xsd:documentation>Ordnance Survey Irish grid with origin at bottom left of Grid V.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="PrecisionEnumeration">
		<xsd:annotation>
			<xsd:documentation>Levels of precision for geocodes.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="1km"/>
			<xsd:enumeration value="100m"/>
			<xsd:enumeration value="10m"/>
			<xsd:enumeration value="1m"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="FeatureTypeEnumeration">
		<xsd:annotation>
			<xsd:documentation>Available types of features for describing walk legs.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="legOrigin">
				<xsd:annotation>
					<xsd:documentation>The start point of the leg.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="legDestination">
				<xsd:annotation>
					<xsd:documentation>The end point of the leg.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="bend">
				<xsd:annotation>
					<xsd:documentation>A bend in the track that merits attention (without a junction).</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="crossing">
				<xsd:annotation>
					<xsd:documentation>Cross over the road.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="bridge">
				<xsd:annotation>
					<xsd:documentation>Traversing over a bridge.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="junction">
				<xsd:annotation>
					<xsd:documentation>Either a point at which another road is taken, or a side road that is passed along the way.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="miniRoundabout"/>
			<xsd:enumeration value="roadChange">
				<xsd:annotation>
					<xsd:documentation>Denotes a change of road name when there is no junction.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="roundabout"/>
			<xsd:enumeration value="subway">
				<xsd:annotation>
					<xsd:documentation>Going through a subway.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="trafficLights"/>
			<xsd:enumeration value="landmark">
				<xsd:annotation>
					<xsd:documentation>A named landmark that can be seen from the track. The name should be provided in the Feature Description.</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="RelativeBearingEnumeration">
		<xsd:annotation>
			<xsd:documentation>Available directions to turn from a feature point.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="left"/>
			<xsd:enumeration value="right"/>
			<xsd:enumeration value="straightAhead"/>
			<xsd:enumeration value="uTurn"/>
		</xsd:restriction>
	</xsd:simpleType>
	<!-- ======================================================================= -->
	<!-- Mode Enumerations -->
	<xsd:simpleType name="VehicleModesEnumeration">
		<xsd:annotation>
			<xsd:documentation>Modes of transport applicable to timetabled public transport.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="air"/>
			<xsd:enumeration value="bus"/>
			<xsd:enumeration value="coach"/>
			<xsd:enumeration value="ferry"/>
			<xsd:enumeration value="metro"/>
			<xsd:enumeration value="rail"/>
			<xsd:enumeration value="tram"/>
			<xsd:enumeration value="underground"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="ContinuousModesEnumeration">
		<xsd:annotation>
			<xsd:documentation>Modes of transport applicable to private and non-timetabled transport.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="walk"/>
			<xsd:enumeration value="car"/>
			<xsd:enumeration value="taxi"/>
			<xsd:enumeration value="cycle"/>
			<xsd:enumeration value="drt"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="AllModesEnumeration">
		<xsd:annotation>
			<xsd:documentation>Union of vehicle and continuous modes.</xsd:documentation>
		</xsd:annotation>
		<xsd:union memberTypes="VehicleModesEnumeration ContinuousModesEnumeration"/>
	</xsd:simpleType>
	<xsd:simpleType name="InterchangeNodeTypeEnumeration">
		<xsd:annotation>
			<xsd:documentation>Determines the types of interchange nodes in terms of their transport mode.</xsd:documentation>
		</xsd:annotation>
		<xsd:union memberTypes="AllModesEnumeration">
			<xsd:simpleType>
				<xsd:restriction base="xsd:NMTOKEN">
					<xsd:enumeration value="concourse"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:union>
	</xsd:simpleType>
	<!-- ======================================================================= -->
	<!-- Timetable Enumerations -->
	<xsd:simpleType name="StopActivityEnumeration">
		<xsd:annotation>
			<xsd:documentation>Allowed values for stop activities.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="pickUpOnly"/>
			<xsd:enumeration value="setDownOnly"/>
			<xsd:enumeration value="pickUpAndSetDown"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="StopTypeEnumeration">
		<xsd:annotation>
			<xsd:documentation>Allowed values for stop types.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="origin"/>
			<xsd:enumeration value="intermediate"/>
			<xsd:enumeration value="destination"/>
			<xsd:enumeration value="originDestination"/>
		</xsd:restriction>
	</xsd:simpleType>
	<!-- ======================================================================= -->
	<!-- Common geographical types -->
	<xsd:complexType name="GeocodeStructure">
		<xsd:annotation>
			<xsd:documentation>Co-ordinate type that supports easting and northing.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="GridType" type="GeocodeGridTypeEnumeration" default="UKOS" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Specifies the grid system being used. e.g. UKOS or IrishOS.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Easting">
				<xsd:annotation>
					<xsd:documentation>OS 1 metre - 6 digits.</xsd:documentation>
				</xsd:annotation>
				<xsd:simpleType>
					<xsd:restriction base="xsd:nonNegativeInteger">
						<xsd:maxInclusive value="999999"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="Northing">
				<xsd:annotation>
					<xsd:documentation>OS 1 metre - 6/7 digits.</xsd:documentation>
				</xsd:annotation>
				<xsd:simpleType>
					<xsd:restriction base="xsd:nonNegativeInteger">
						<xsd:maxInclusive value="1999999"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="Precision" type="PrecisionEnumeration" use="optional" default="1km"/>
	</xsd:complexType>
	<xsd:complexType name="LineStringStructure">
		<xsd:annotation>
			<xsd:documentation>Based on the LineString element from GML 2.1.2, but using JourneyWeb coordinate representations.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="Geocode" minOccurs="2" maxOccurs="unbounded">
				<xsd:annotation>
					<xsd:documentation>@Precision, @GeocodeId.
A point on a map. Id may refer to a previously defined point.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:complexContent>
						<xsd:extension base="GeocodeStructure">
							<xsd:attribute name="GeocodeID" type="xsd:ID" use="required"/>
						</xsd:extension>
					</xsd:complexContent>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="MapStructure">
		<xsd:annotation>
			<xsd:documentation>Either a rendered map or a sequence of points that can be rendered by the client.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:element name="Mapping" type="LineStringStructure">
				<xsd:annotation>
					<xsd:documentation>Set of physical points which describe this segment. This must include the beginning and end of the segment.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="RenderedMap" type="xsd:anyURI">
				<xsd:annotation>
					<xsd:documentation>URL of a custom map rendered by the journey planning system.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:choice>
	</xsd:complexType>
	<xsd:complexType name="MapSystemReferenceStructure">
		<xsd:annotation>
			<xsd:documentation>@MappingSystem.
Map element IDs (e.g. OSODRs or TOIDs) can be passed separately to ease the mapping process for those systems that support them.</xsd:documentation>
		</xsd:annotation>
		<xsd:simpleContent>
			<xsd:extension base="xsd:string">
				<xsd:attribute name="MappingSystem" type="MappingSystemEnumeration" use="required">
					<xsd:annotation>
						<xsd:documentation>This enumeration should include all mapping systems used by JourneyWeb clients and suppliers.</xsd:documentation>
					</xsd:annotation>
				</xsd:attribute>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<!-- ======================================================================= -->
	<!-- Common service types -->
	<xsd:complexType name="ServiceStructure">
		<xsd:annotation>
			<xsd:documentation>The elements that identify a service.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="OperatorCode" type="OperatorCodeType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Code identifying transport operator.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="ServiceNumber" type="ServiceNumberType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>The customer facing service number. Define but leave blank where there isn't one e.g. most rail services.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Direction" type="DirectionType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Direction of travel. Not well defined.!</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ServiceRequestStructure">
		<xsd:annotation>
			<xsd:documentation>The minimum required to identify a service in a request.</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:restriction base="ServiceStructure">
				<xsd:sequence>
					<xsd:element name="OperatorCode" type="OperatorCodeType" minOccurs="0">
						<xsd:annotation>
							<xsd:documentation>Unique code of operator.</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="ServiceNumber" type="ServiceNumberType">
						<xsd:annotation>
							<xsd:documentation>Identifier of service.</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="Direction" type="DirectionType" minOccurs="0">
						<xsd:annotation>
							<xsd:documentation>Direction in which service runs.</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
				</xsd:sequence>
			</xsd:restriction>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="UniqueServiceStructure">
		<xsd:annotation>
			<xsd:documentation>The minimum required to uniquely identify a service.</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:restriction base="ServiceStructure">
				<xsd:sequence>
					<xsd:element name="OperatorCode" type="OperatorCodeType">
						<xsd:annotation>
							<xsd:documentation>Unique code of operator.</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="ServiceNumber" type="ServiceNumberType">
						<xsd:annotation>
							<xsd:documentation>Identifier of service.</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="Direction" type="DirectionType" minOccurs="0">
						<xsd:annotation>
							<xsd:documentation>Direction in which service runs.</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
				</xsd:sequence>
			</xsd:restriction>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="ServiceResponseStructure">
		<xsd:annotation>
			<xsd:documentation>Information that can be returned about a service in a response.</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="UniqueServiceStructure">
				<xsd:sequence>
					<xsd:element name="Mode" type="VehicleModesEnumeration">
						<xsd:annotation>
							<xsd:documentation>Transport mode of service, e.g. bus</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:group ref="ServiceResponseExtrasGroup"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="ContinuousLegServiceStructure">
		<xsd:annotation>
			<xsd:documentation>Description of a service used in a Continuous Leg.</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="ServiceStructure">
				<xsd:sequence>
					<xsd:element name="Mode" type="ContinuousModesEnumeration">
						<xsd:annotation>
							<xsd:documentation>The mode of the service.</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:group ref="ServiceResponseExtrasGroup"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:group name="ServiceResponseExtrasGroup">
		<xsd:annotation>
			<xsd:documentation>Shared elements between the ServiceResponseStructure and the ContinuousLegServiceStructure.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="OperatorName" type="xsd:string" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>The customer facing name of the operator.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Description" type="xsd:string" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>The description of the service.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="FirstDateOfOperation" type="xsd:date" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Date that service commences.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="DaysOfOperation" type="DaysOfOperationStructure" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>The days of the week for which this trip is valid at this time. </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:choice minOccurs="0">
				<xsd:element name="ExpiryDate" type="xsd:date">
					<xsd:annotation>
						<xsd:documentation>The last day that this trips timetable is valid.</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element name="OpenEnded">
					<xsd:annotation>
						<xsd:documentation>The timetable does not have a specified end date.</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
			</xsd:choice>
			<xsd:element name="DestinationBoard" type="xsd:string" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>The name displayed on the front of this vehicle.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="TimetableLink" type="TimetableLinkStructure" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Link to a timetable for this leg of the journey.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:group>
	<!-- ======================================================================= -->
	<!-- Common request types -->
	<xsd:complexType name="FrequencyStructure">
		<xsd:annotation>
			<xsd:documentation>The scheduled time gap between departures for a frequency-based service. Minimum and maximum time gaps can also be specified.</xsd:documentation>
		</xsd:annotation>
		<xsd:all>
			<xsd:element name="ScheduledFrequency" type="DayTimeDurationType">
				<xsd:annotation>
					<xsd:documentation>The scheduled time gap between departures for a frequency-based service.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="MinimumFrequency" type="DayTimeDurationType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>The minimum time gap between departures for a frequency-based service.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="MaximumFrequency" type="DayTimeDurationType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>The maximum time gap between departures for a frequency-based service.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>
	<xsd:complexType name="LegDetailsStructure">
		<xsd:annotation>
			<xsd:documentation>Options controlling level of detail returned.</xsd:documentation>
		</xsd:annotation>
		<xsd:all>
			<xsd:element name="IncludeIntermediateStops" type="IntermediateStopsRequestEnumeration" default="none" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Which types of intermediate stops are to be returned (default none). all, before leg, etc.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="IncludeTracks" type="xsd:boolean" default="false" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Whether to include detailed track information for the legs for which track data is available (default false).</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="IncludeInstructions" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Whether to include textual instructions for legs using particular modes. Default is to omit all instructions. Note that including instructions for a particular mode will also include track data for that mode (even if IncludeTracks has been set to false).</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Mode" type="AllModesEnumeration" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>Specifies a mode for which leg instructions should be returned.</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="IncludeInterchanges" type="xsd:boolean" default="false" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Whether to include detailed interchange information in response (default false).</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="RealTime" type="xsd:boolean" default="false" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Whether real-time information be returned (default false).</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="MappingSystem" type="MappingSystemRequestEnumeration" default="none" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>The mapping system which the client understands e.g. TOID, OSODR, NavTech, MDV, none. Defaults to none - i.e. no mapping system references are to be returned.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>
	<xsd:complexType name="ModesRequestStructure">
		<xsd:annotation>
			<xsd:documentation>@Exclude (optional).
The modes to include/exclude from the calculation. If omitted then all modes are used.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="Mode" type="AllModesEnumeration" maxOccurs="unbounded">
				<xsd:annotation>
					<xsd:documentation>A method of transportation such as bus, rail, etc.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="Exclude" type="xsd:boolean" use="optional" default="false"/>
	</xsd:complexType>
	<xsd:complexType name="PlaceIDRequestStructure">
		<xsd:annotation>
			<xsd:documentation>Type for specifying place references on requests</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:element name="NaPTANID" type="NaPTANIDType">
				<xsd:annotation>
					<xsd:documentation>ID of a NaPTAN node. </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Geocode" type="GeocodeStructure">
				<xsd:annotation>
					<xsd:documentation>@Precision</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="LocalityID" type="LocalityIDType">
				<xsd:annotation>
					<xsd:documentation>NPTG identifier of locality</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:choice>
	</xsd:complexType>
	<xsd:complexType name="RangeStructure">
		<xsd:annotation>
			<xsd:documentation>Type for specifying additional request general constraints.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:element name="Sequence" type="xsd:int">
				<xsd:annotation>
					<xsd:documentation>The number of journeys to return after the departure time or before the arrival time.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Interval" type="DayTimeDurationType">
				<xsd:annotation>
					<xsd:documentation>An interval after a departure time or before an arrival time for which journeys should be returned.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="LimitedInterval">
				<xsd:annotation>
					<xsd:documentation>Used to limit the number of journeys returned for an interval. e.g. Get the first 3 journeys in the next 6 hours. An example use of this is to get the first 3 journeys during an off-peak period i.e. stop the search before the peak period starts.
</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Max" type="xsd:int">
							<xsd:annotation>
								<xsd:documentation>Maximum number of journeys</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="Interval" type="DayTimeDurationType">
							<xsd:annotation>
								<xsd:documentation>An interval after a departure time or before an arrival time for which journeys should be returned.</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="Min" type="xsd:int" default="0" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>Minimum number of journeys to return. If greater than zero this will extend the interval if not enough journeys have been found. Default zero.</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="MaxInterval" type="DayTimeDurationType" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>The maximum interval to search when extending the interval to find a minimum number of journeys to return. The default of 24 hours is not included in the schema due to validation problems with Xerces.</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:choice>
	</xsd:complexType>
	<xsd:complexType name="OriginDestinationRequestStructure">
		<xsd:annotation>
			<xsd:documentation>Type for specifying origin and destination places on requests.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="Place" maxOccurs="unbounded">
				<xsd:annotation>
					<xsd:documentation>The individual places that make up the origin or destination. In most cases these are a choice of start or end places (see Range).</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="ID" type="PlaceIDRequestStructure">
							<xsd:annotation>
								<xsd:documentation>Identifier(s) of the place. Normally one of the following. Multiple NaPTAN codes may be used.  </xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="JourneyTime" type="xsd:dateTime" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>The arrive or depart time and date for this place.</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="Seed" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>Details of the calculation so far from the origin or destination.
Can be used to implement the maxChanges algorithm, to allow the journey to continue on the same vehicle, etc.</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element name="StartTime" type="xsd:dateTime" minOccurs="0">
										<xsd:annotation>
											<xsd:documentation>For depart after requests this is the departure time at the origin.
For arrive by requests this is the arrival time at the destination.</xsd:documentation>
										</xsd:annotation>
									</xsd:element>
									<xsd:element name="NumChanges" type="xsd:int" minOccurs="0"/>
									<xsd:element name="Service" type="UniqueServiceStructure" minOccurs="0">
										<xsd:annotation>
											<xsd:documentation>The last service used in the calculation. Used in conjunction with JourneyTime to allow the same vehicle to be used.</xsd:documentation>
										</xsd:annotation>
									</xsd:element>
									<xsd:element name="WalkDistance" type="DistanceType" minOccurs="0">
										<xsd:annotation>
											<xsd:documentation>The walk distance so far in metres.</xsd:documentation>
										</xsd:annotation>
									</xsd:element>
								</xsd:sequence>
							</xsd:complexType>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="GivenName" type="xsd:string" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>The name of the origin/destination to be used in the results. Allows results to be given using the name that the user has selected instead of a name select from NaPTAN (particularly useful with multi-lingual places). Must be  given when a geocode is used as the origin/destination. </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<!-- ======================================================================= -->
	<!-- Common response types -->
	<xsd:complexType name="ReturnedPlaceStructure">
		<xsd:annotation>
			<xsd:documentation>@TimingInformationPoint (optional)
Represents a place in a response.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="Name" type="xsd:string" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>A meaningful name for the place that will be given to the end user.
If a GivenName was input in the request it should be returned here. This will usually contain more than the NaPTAN name e.g. Locality and NaPTAN name - Epsom: High Street</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:choice>
				<xsd:sequence>
					<xsd:element name="NaPTANID" type="NaPTANIDType">
						<xsd:annotation>
							<xsd:documentation>ID of a NaPTAN node</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="Geocode" type="GeocodeStructure" minOccurs="0">
						<xsd:annotation>
							<xsd:documentation>@Precision (optional) default 1 km
The coordinate of the NaPTAN stop - can be used for rudimentary map displays.</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
				</xsd:sequence>
				<xsd:element name="Geocode" type="GeocodeStructure">
					<xsd:annotation>
						<xsd:documentation>@Precision (optional) default 1km
A point on a map.</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
			</xsd:choice>
			<xsd:element name="Bay" type="xsd:string" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Additional bay information that is not implied by a NaPTAN ID e.g. rail platform.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="TimingInformationPoint" type="xsd:boolean" use="optional"/>
	</xsd:complexType>
	<xsd:complexType name="DaysOfOperationStructure">
		<xsd:annotation>
			<xsd:documentation>Type for Days of operation.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:choice>
				<xsd:sequence>
					<xsd:choice>
						<xsd:sequence>
							<xsd:choice>
								<xsd:sequence>
									<xsd:element name="Monday" type="EmptyType"/>
									<xsd:element name="Tuesday" type="EmptyType"/>
									<xsd:element name="Wednesday" type="EmptyType"/>
									<xsd:element name="Thursday" type="EmptyType"/>
									<xsd:element name="Friday" type="EmptyType"/>
								</xsd:sequence>
								<xsd:element name="MondayToFriday" type="EmptyType"/>
							</xsd:choice>
							<xsd:element name="Saturday" type="EmptyType"/>
						</xsd:sequence>
						<xsd:element name="MondayToSaturday" type="EmptyType"/>
					</xsd:choice>
					<xsd:element name="Sunday" type="EmptyType"/>
				</xsd:sequence>
				<xsd:element name="MondayToSunday" type="EmptyType"/>
			</xsd:choice>
			<xsd:choice>
				<xsd:element name="BankHoliday" type="EmptyType"/>
				<xsd:element name="NotBankHoliday" type="EmptyType"/>
			</xsd:choice>
			<xsd:choice>
				<xsd:element name="SchoolHoliday" type="EmptyType"/>
				<xsd:element name="NotSchoolHoliday" type="EmptyType"/>
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="TimetableLinkStructure">
		<xsd:annotation>
			<xsd:documentation>Type for URL to timetable.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="URL" type="xsd:anyURI" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>A URL which can be used to obtain a pre-rendered timetable - PDF, HTML, etc.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="SchematicURL" type="xsd:anyURI" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>A URL which can be used to obtain a pre-rendered schematic map of the service - PDF, HTML, etc.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="PrivateID" type="xsd:string" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>A private identifier to unique identify a timetable (may represent both directions with a single ID - in which case direction will be defined as well). This can be used ServiceTimetableRequest to obtain the timetable data.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Direction" type="xsd:string" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Used if the PrivateID doesn't include direction</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="MatrixDataAvailable" type="xsd:boolean">
				<xsd:annotation>
					<xsd:documentation>Indicates if matrix timetable data can be requested for this timetable.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="LegCollectionStructure">
		<xsd:annotation>
			<xsd:documentation>A collection of legs.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice maxOccurs="unbounded">
			<xsd:element name="TimedLeg" type="TimedLegStructure">
				<xsd:annotation>
					<xsd:documentation>A leg that runs to a timetabled time.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="FrequencyLeg" type="FrequencyLegStructure">
				<xsd:annotation>
					<xsd:documentation>A leg that runs to a given frequency.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="ContinuousLeg" type="ContinuousLegStructure">
				<xsd:annotation>
					<xsd:documentation>A leg that doesn't run to any type of schedule, e.g. walking, cycling</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="InterchangeLeg" type="InterchangeLegStructure">
				<xsd:annotation>
					<xsd:documentation>A leg that describes an interchange. Can occur as end leg as well as within journey (e.g. Waterloo station to TCR - would need to interchange to underground first).</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:choice>
	</xsd:complexType>
	<xsd:complexType name="LegTrackStructure">
		<xsd:annotation>
			<xsd:documentation>Geospatial representation of a leg for mapping and instructional purposes.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="TrackSegment" maxOccurs="unbounded">
				<xsd:annotation>
					<xsd:documentation>@TransXChangeSegmentID:an optional reference to the operator's TransXChange ID for the segment.

A track segment describes a section of the geospatial representation of a leg. The choice of segments subdividing a leg is left up to the server.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Map" type="MapStructure">
							<xsd:annotation>
								<xsd:documentation>Information to create a visual map.</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="MapSystemReference" type="MapSystemReferenceStructure" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>@MappingSystem
A mapping system reference (e.g. TOID, OSODR, NavTech, MDV) value which the requesting client has asked for.</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="Instructions" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>This contains the information necessary to describe a track segment textually in a step by step fashion.</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element name="Summary" type="xsd:string" minOccurs="0">
										<xsd:annotation>
											<xsd:documentation>Optional textual description of segment. May correspond directly to features or may be a customised replacement  (e.g. for commonly used segments).</xsd:documentation>
										</xsd:annotation>
									</xsd:element>
									<xsd:element name="Feature" maxOccurs="unbounded">
										<xsd:annotation>
											<xsd:documentation>@GeocodeRef
Represents a physical obstacle in the route e.g. a crossing. The first feature point should be the start point of the leg (the leg board point). Each feature contains directions to the next feature.</xsd:documentation>
										</xsd:annotation>
										<xsd:complexType>
											<xsd:all>
												<xsd:element name="FeatureType" type="FeatureTypeEnumeration">
													<xsd:annotation>
														<xsd:documentation>An enumeration of the different types of features.</xsd:documentation>
													</xsd:annotation>
												</xsd:element>
												<xsd:element name="RelativeBearing" type="RelativeBearingEnumeration">
													<xsd:annotation>
														<xsd:documentation>Which way you would turn from this feature point.</xsd:documentation>
													</xsd:annotation>
												</xsd:element>
												<xsd:element name="AbsoluteBearing" minOccurs="0">
													<xsd:annotation>
														<xsd:documentation>The compass bearing which you should take directly from this feature point.</xsd:documentation>
													</xsd:annotation>
													<xsd:simpleType>
														<xsd:restriction base="xsd:nonNegativeInteger">
															<xsd:maxExclusive value="360"/>
														</xsd:restriction>
													</xsd:simpleType>
												</xsd:element>
												<xsd:element name="OnwardName" type="xsd:string" minOccurs="0">
													<xsd:annotation>
														<xsd:documentation>The name of the road or path following this feature.</xsd:documentation>
													</xsd:annotation>
												</xsd:element>
												<xsd:element name="RoadNumber" type="xsd:string" minOccurs="0">
													<xsd:annotation>
														<xsd:documentation>The number of the road following this feature e.g. A1.</xsd:documentation>
													</xsd:annotation>
												</xsd:element>
												<xsd:element name="Distance" type="DistanceType" minOccurs="0">
													<xsd:annotation>
														<xsd:documentation>Provides the distance to the next feature point, or to the leg alight point for the last feature point.</xsd:documentation>
													</xsd:annotation>
												</xsd:element>
												<xsd:element name="Description" type="xsd:string" minOccurs="0">
													<xsd:annotation>
														<xsd:documentation>Provides a description of the feature.</xsd:documentation>
													</xsd:annotation>
												</xsd:element>
											</xsd:all>
											<xsd:attribute name="GeocodeRef" type="xsd:IDREF" use="required">
												<xsd:annotation>
													<xsd:documentation>Refers to a geocode in the mapping information for the track segment.</xsd:documentation>
												</xsd:annotation>
											</xsd:attribute>
										</xsd:complexType>
									</xsd:element>
								</xsd:sequence>
							</xsd:complexType>
						</xsd:element>
					</xsd:sequence>
					<xsd:attribute name="TransXChangeSegmentID" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>Identifies the segment according to its TransXChange ID.</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="TotalDistance" type="DistanceType" use="optional"/>
	</xsd:complexType>
	<!-- ======================================================================= -->
	<!-- Journey leg types -->
	<xsd:complexType name="AbstractLegStructure" abstract="true">
		<xsd:annotation>
			<xsd:documentation>An abstract base type for non-interchange legs.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:group ref="MessageGroup">
				<xsd:annotation>
					<xsd:documentation>Information about the leg returned. E.g. Intermediate stops not available.</xsd:documentation>
				</xsd:annotation>
			</xsd:group>
			<xsd:element name="ServiceOrigin" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>@TimingInformationPoint (optional)
The origin place.
Only omitted if the board place is the origin.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:complexContent>
						<xsd:extension base="ReturnedPlaceStructure">
							<xsd:group ref="OriginTimeGroup"/>
						</xsd:extension>
					</xsd:complexContent>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="IntermediateA" minOccurs="0" maxOccurs="unbounded">
				<xsd:annotation>
					<xsd:documentation>@TimingInformationPoint (optional)
Returned if IncludeIntermediateStops is set to 'all'.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:complexContent>
						<xsd:extension base="ReturnedPlaceStructure">
							<xsd:group ref="IntermediateTimeGroup"/>
						</xsd:extension>
					</xsd:complexContent>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="LegBoard">
				<xsd:annotation>
					<xsd:documentation>@TimingInformationPoint (optional)</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:complexContent>
						<xsd:extension base="ReturnedPlaceStructure">
							<xsd:sequence>
								<xsd:element name="Pass" type="xsd:boolean" minOccurs="0">
									<xsd:annotation>
										<xsd:documentation>true if this is the requested via point.</xsd:documentation>
									</xsd:annotation>
								</xsd:element>
								<xsd:element name="InterchangeTime" type="xsd:time" minOccurs="0"/>
								<xsd:group ref="BoardTimeGroup"/>
							</xsd:sequence>
						</xsd:extension>
					</xsd:complexContent>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="IntermediateB" minOccurs="0" maxOccurs="unbounded">
				<xsd:annotation>
					<xsd:documentation>@TimingInformationPoint (optional).
Returned if IncludeIntermediateStops is set to 'all' or 'leg', or this is the via point i.e. pass = true.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:complexContent>
						<xsd:extension base="ReturnedPlaceStructure">
							<xsd:sequence>
								<xsd:element name="Pass" type="xsd:boolean" minOccurs="0">
									<xsd:annotation>
										<xsd:documentation>true if this is the requested via point</xsd:documentation>
									</xsd:annotation>
								</xsd:element>
								<xsd:group ref="IntermediateTimeGroup"/>
							</xsd:sequence>
						</xsd:extension>
					</xsd:complexContent>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="LegAlight">
				<xsd:annotation>
					<xsd:documentation>@TimingInformationPoint (optional).
</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:complexContent>
						<xsd:extension base="ReturnedPlaceStructure">
							<xsd:sequence>
								<xsd:element name="Pass" type="xsd:boolean" minOccurs="0">
									<xsd:annotation>
										<xsd:documentation>true if this is the requested via point.</xsd:documentation>
									</xsd:annotation>
								</xsd:element>
								<xsd:element name="InterchangeTime" type="xsd:time" minOccurs="0"/>
								<xsd:group ref="AlightTimeGroup"/>
							</xsd:sequence>
						</xsd:extension>
					</xsd:complexContent>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="IntermediateC" minOccurs="0" maxOccurs="unbounded">
				<xsd:annotation>
					<xsd:documentation>@TimingInformationPoint (optional)
Returned if IncludeIntermediateStops is set to 'all'.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:complexContent>
						<xsd:extension base="ReturnedPlaceStructure">
							<xsd:group ref="IntermediateTimeGroup"/>
						</xsd:extension>
					</xsd:complexContent>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="ServiceDestination" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>@TimingInformationPoint (optional).
The destination place.  Only omitted if the alight place is the destination.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:complexContent>
						<xsd:extension base="ReturnedPlaceStructure">
							<xsd:group ref="DestinationTimeGroup"/>
						</xsd:extension>
					</xsd:complexContent>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="LegTrack" type="LegTrackStructure" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>@TotalDistance
Geospatial representation of the leg for mapping and instructional purposes.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Notes" type="xsd:string" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Any notes about the vehicle or walk.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="legID" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>Identifies the leg for future reference in any LegDetailsRequests.</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>
	<xsd:complexType name="TimedLegStructure">
		<xsd:annotation>
			<xsd:documentation>Type for a leg that runs to a schedule.</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="AbstractLegStructure">
				<xsd:sequence>
					<xsd:element name="Service" type="ServiceResponseStructure"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="FrequencyLegStructure">
		<xsd:annotation>
			<xsd:documentation>Type for a leg that runs a frequency based service.</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="AbstractLegStructure">
				<xsd:sequence>
					<xsd:element name="Service" type="ServiceResponseStructure"/>
					<xsd:element name="OriginDestinationTimes" minOccurs="0">
						<xsd:annotation>
							<xsd:documentation>Times for the complete trip of the vehicle.</xsd:documentation>
						</xsd:annotation>
						<xsd:complexType>
							<xsd:group ref="FrequencyTimeGroup"/>
						</xsd:complexType>
					</xsd:element>
					<xsd:element name="BoardAlightTimes">
						<xsd:annotation>
							<xsd:documentation>Times for the part of the journey the traveller will make.</xsd:documentation>
						</xsd:annotation>
						<xsd:complexType>
							<xsd:group ref="FrequencyTimeGroup"/>
						</xsd:complexType>
					</xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="ContinuousLegStructure">
		<xsd:annotation>
			<xsd:documentation>LegBoard and LegAlight should be used to describe walk, etc. ServiceOrigin and ServiceDestination should only be used for DRT.</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="AbstractLegStructure">
				<xsd:sequence>
					<xsd:element name="Service" type="ContinuousLegServiceStructure">
						<xsd:annotation>
							<xsd:documentation>Description of the service (mostly optional as could be used to describe a walk leg).</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:group ref="DurationWindowGroup"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="InterchangeLegStructure">
		<xsd:annotation>
			<xsd:documentation>Structure of an interchange leg.</xsd:documentation>
		</xsd:annotation>
		<xsd:all>
			<xsd:element name="LegOrigin" type="ReturnedPlaceStructure">
				<xsd:annotation>
					<xsd:documentation>Start point of Leg. Equivalent to the "LegBoard" for this leg (but since there is no vehicle involved there can be no boarding).</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="LegDestination" type="ReturnedPlaceStructure">
				<xsd:annotation>
					<xsd:documentation>End point of Leg. Equivalent to the "LegAlight" for this leg (but since there is no vehicle involved there can be no alighting).</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="InterchangePath">
				<xsd:annotation>
					<xsd:documentation>Describes the interchange in terms of a sequence of pairs of nodes and links with accessibility and duration.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:sequence maxOccurs="unbounded">
							<xsd:element name="InterchangeNode" type="InterchangeNodeStructure">
								<xsd:annotation>
									<xsd:documentation>A point within an interchange. Either a point of access to transport, such as a bay, or an intermediate point between other nodes. </xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="InterchangeLink" type="InterchangeLinkStructure">
								<xsd:annotation>
									<xsd:documentation>A possible path between two interchange nodes.</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
						</xsd:sequence>
						<xsd:element name="InterchangeEndNode" type="InterchangeNodeStructure">
							<xsd:annotation>
								<xsd:documentation>The final node in the interchange path - should correspond to the LegDestination.</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="Map" type="MapStructure" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Optional mapping information for displaying interchange legs.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="InterchangeSchematics" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Schematics are hyperlink references to hand-crafted schematic map images.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="SchematicURL" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>A hyperlink to the schematic map. Maps should be in a web compatible image format (e.g. JPEG, GIF) that can be embedded in a web page or a PDF.</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:simpleContent>
									<xsd:extension base="xsd:string">
										<xsd:attribute name="href" type="xsd:anyURI"/>
									</xsd:extension>
								</xsd:simpleContent>
							</xsd:complexType>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:all>
		<xsd:attribute name="legID" type="xsd:string"/>
	</xsd:complexType>
	<!-- ======================================================================= -->
	<!-- Interchange leg types -->
	<xsd:complexType name="InterchangeNodeStructure">
		<xsd:annotation>
			<xsd:documentation>@GeocodeRef
A node in the interchange model. Each node has a type indicating its primary function (for example, a rail platform would have a type of "rail")</xsd:documentation>
		</xsd:annotation>
		<xsd:all>
			<xsd:element name="InterchangeNodeType" type="InterchangeNodeTypeEnumeration">
				<xsd:annotation>
					<xsd:documentation>Determines the types of interchange nodes in terms of their transport mode.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Description" type="xsd:string" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Name or brief description of node. For example, "Waterloo Main Concourse".</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="NaPTANID" type="NaPTANIDType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>If the node corresponds to a NaPTAN node then the NaPTAN ID should be included here.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:all>
		<xsd:attribute name="GeocodeRef" type="xsd:IDREF" use="optional">
			<xsd:annotation>
				<xsd:documentation>Refers to a geocode in the optional mapping information provided as part of the Interchange Leg. If mapping information is provided then this reference is required.</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>
	<xsd:complexType name="InterchangeLinkStructure">
		<xsd:annotation>
			<xsd:documentation>A link in the interchange model. Links have a duration and optional accessibility hazards.</xsd:documentation>
		</xsd:annotation>
		<xsd:all>
			<xsd:element name="Duration" type="DayTimeDurationType">
				<xsd:annotation>
					<xsd:documentation>How long it takes to traverse the link, assuming the specified walk speed.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Description" type="xsd:string" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>A description of the link.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Accessibility" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Information on any limits on accessibility on the link.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Hazard" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>@ChangeOfLevel whether the link goes up or down.
The nature of the accessibility constraint. One of a fixed list of defined values.
</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:simpleContent>
									<xsd:extension base="AccessibilityHazardEnumeration">
										<xsd:attribute name="ChangeOfLevel" type="ChangeOfLevelEnumeration" use="optional" default="noChange"/>
									</xsd:extension>
								</xsd:simpleContent>
							</xsd:complexType>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>
</xsd:schema>

