<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="NaPTAN v1.4">
	<xs:element name="NaPTAN">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Area" maxOccurs="unbounded">
					<xs:complexType>
						<xs:all>
							<xs:element name="AreaID">
								<xs:annotation>
									<xs:documentation>ATCO database code</xs:documentation>
								</xs:annotation>
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:pattern value="[0-9]{3}"/>
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="AreaName" type="LimitedStringType"/>
							<xs:element name="Stops">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="Stop" maxOccurs="unbounded">
											<xs:complexType>
												<xs:all>
													<xs:element name="ATCOCode" type="ATCOCodeType">
														<xs:annotation>
															<xs:documentation>Full 12 character ATCO Code</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="NatGaz" type="NatGazType"/>
													<xs:element name="AltNatGazs" minOccurs="0">
														<xs:complexType>
															<xs:sequence>
																<xs:element name="NatGaz" type="NatGazType" maxOccurs="unbounded"/>
															</xs:sequence>
														</xs:complexType>
													</xs:element>
													<xs:element name="CommonName" type="LimitedStringType">
														<xs:annotation>
															<xs:documentation>As seen on bus stop - often the same for either side of the road</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="AltCommonNames" minOccurs="0">
														<xs:complexType>
															<xs:sequence>
																<xs:element name="CommonName" type="LimitedStringType" maxOccurs="unbounded"/>
															</xs:sequence>
														</xs:complexType>
													</xs:element>
													<xs:element name="Identifier" type="LimitedStringType" minOccurs="0">
														<xs:annotation>
															<xs:documentation>Used with common name to distinguish the stop e.g. bay #, opp, adj, etc.</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="GridType" type="GridTypeType" minOccurs="0">
														<xs:annotation>
															<xs:documentation>Irish grid letter or blank</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="Easting" type="EastingType">
														<xs:annotation>
															<xs:documentation>OSGB  1 metre - 6 digits</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="Northing" type="NorthingType">
														<xs:annotation>
															<xs:documentation>OSGB  1 metre - 6/7 digits</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="Lon" type="xs:double" minOccurs="0">
														<xs:annotation>
															<xs:documentation>WGS84 position (decimal degrees) - export only</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="Lat" type="xs:double" minOccurs="0">
														<xs:annotation>
															<xs:documentation>WGS84 position (decimal degrees)  - export only</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="Direction">
														<xs:annotation>
															<xs:documentation>Direction of road that the stop is on</xs:documentation>
														</xs:annotation>
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:enumeration value="N"/>
																<xs:enumeration value="S"/>
																<xs:enumeration value="E"/>
																<xs:enumeration value="W"/>
																<xs:enumeration value="NE"/>
																<xs:enumeration value="NW"/>
																<xs:enumeration value="SE"/>
																<xs:enumeration value="SW"/>
																<xs:enumeration value="NA"/>
															</xs:restriction>
														</xs:simpleType>
													</xs:element>
													<xs:element name="Street" type="LimitedStringType">
														<xs:annotation>
															<xs:documentation>Street name of where the stop is located</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="Landmark" type="LimitedStringType" minOccurs="0">
														<xs:annotation>
															<xs:documentation>Distinguishing feature of the stop</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="Town" type="LimitedStringType" minOccurs="0">
														<xs:annotation>
															<xs:documentation>Optional higher level name</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="Suburb" type="LimitedStringType" minOccurs="0">
														<xs:annotation>
															<xs:documentation>Optional lower level name</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="StopType">
														<xs:annotation>
															<xs:documentation>The type of stop</xs:documentation>
														</xs:annotation>
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:enumeration value="BCT">
																	<xs:annotation>
																		<xs:documentation>On street Bus \ Coach \ Tram Stop</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="BCS">
																	<xs:annotation>
																		<xs:documentation>Bus \ Coach bay \ stand \ stance within Bus \ Coach Stations</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="BCE">
																	<xs:annotation>
																		<xs:documentation>Bus \ Coach Station Entrance</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="RSE">
																	<xs:annotation>
																		<xs:documentation>Rail Station Entrance</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="TMU">
																	<xs:annotation>
																		<xs:documentation>Tram \ Metro \ Underground Entrance</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="FTD">
																	<xs:annotation>
																		<xs:documentation>Ferry Terminal \ Dock Entrance</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="AIR">
																	<xs:annotation>
																		<xs:documentation>Airport Entrance</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="TXR">
																	<xs:annotation>
																		<xs:documentation>Taxi Rank (head of)</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="STR">
																	<xs:annotation>
																		<xs:documentation>Shared Taxi Rank (head of)</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="RLY">
																	<xs:annotation>
																		<xs:documentation>Railway Station</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="PLT">
																	<xs:annotation>
																		<xs:documentation>Tram \ Metro \ Underground Platforms </xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="FER">
																	<xs:annotation>
																		<xs:documentation>Ferry</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="GAT">
																	<xs:annotation>
																		<xs:documentation>Airport Arrival \ Departure Gate</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="FBT">
																	<xs:annotation>
																		<xs:documentation>Ferry Berth</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="RPL">
																	<xs:annotation>
																		<xs:documentation>Rail Platform</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="MET">
																	<xs:annotation>
																		<xs:documentation>Tram \ Metro \ Underground Access Area</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="BST">
																	<xs:annotation>
																		<xs:documentation>Bus \ Coach \ Station Access Area</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="BCQ">
																	<xs:annotation>
																		<xs:documentation>Bus \ Coach \ Tram Station Variable Bay</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
															</xs:restriction>
														</xs:simpleType>
													</xs:element>
													<xs:element name="BusStopType" minOccurs="0">
														<xs:annotation>
															<xs:documentation>Type of stop. If hail and ride the optional HailAndRideSection will be present</xs:documentation>
														</xs:annotation>
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:enumeration value="MKD">
																	<xs:annotation>
																		<xs:documentation>Marked (pole, shelter etc)</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="HAR">
																	<xs:annotation>
																		<xs:documentation>Hail and Ride - requires Hail and Ride section</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="CUS">
																	<xs:annotation>
																		<xs:documentation>Custom (unmarked, or only marked on road)</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="FLX">
																	<xs:annotation>
																		<xs:documentation>Flexible</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="NA">
																	<xs:annotation>
																		<xs:documentation>Not Applicable - Used for Non BCT \ BCS Stop Types</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
															</xs:restriction>
														</xs:simpleType>
													</xs:element>
													<xs:element name="HailAndRideSection" minOccurs="0">
														<xs:annotation>
															<xs:documentation>Coordinates of the hail and ride section</xs:documentation>
														</xs:annotation>
														<xs:complexType>
															<xs:sequence>
																<xs:element name="StartGridType" type="GridTypeType" minOccurs="0">
																	<xs:annotation>
																		<xs:documentation>Irish grid letter or blank</xs:documentation>
																	</xs:annotation>
																</xs:element>
																<xs:element name="StartEasting" type="EastingType">
																	<xs:annotation>
																		<xs:documentation>OSGB  1 metre - 6 digits</xs:documentation>
																	</xs:annotation>
																</xs:element>
																<xs:element name="StartNorthing" type="NorthingType">
																	<xs:annotation>
																		<xs:documentation>OSGB  1 metre - 6/7 digits</xs:documentation>
																	</xs:annotation>
																</xs:element>
																<xs:element name="StartLon" type="xs:double" minOccurs="0">
																	<xs:annotation>
																		<xs:documentation>WGS84 position (decimal degrees)  - export only</xs:documentation>
																	</xs:annotation>
																</xs:element>
																<xs:element name="StartLat" type="xs:double" minOccurs="0">
																	<xs:annotation>
																		<xs:documentation>WGS84 position (decimal degrees)  - export only</xs:documentation>
																	</xs:annotation>
																</xs:element>
																<xs:element name="EndGridType" type="GridTypeType" minOccurs="0">
																	<xs:annotation>
																		<xs:documentation>Irish grid letter or blank</xs:documentation>
																	</xs:annotation>
																</xs:element>
																<xs:element name="EndEasting" type="EastingType">
																	<xs:annotation>
																		<xs:documentation>OSGB  1 metre - 6 digits</xs:documentation>
																	</xs:annotation>
																</xs:element>
																<xs:element name="EndNorthing" type="NorthingType">
																	<xs:annotation>
																		<xs:documentation>OSGB  1 metre - 6/7 digits</xs:documentation>
																	</xs:annotation>
																</xs:element>
																<xs:element name="EndLon" type="xs:double" minOccurs="0">
																	<xs:annotation>
																		<xs:documentation>WGS84 position (decimal degrees)  - export only</xs:documentation>
																	</xs:annotation>
																</xs:element>
																<xs:element name="EndLat" type="xs:double" minOccurs="0">
																	<xs:annotation>
																		<xs:documentation>WGS84 position (decimal degrees)  - export only</xs:documentation>
																	</xs:annotation>
																</xs:element>
															</xs:sequence>
														</xs:complexType>
													</xs:element>
													<xs:element name="BusRegistrationStatus" minOccurs="0">
														<xs:annotation>
															<xs:documentation>Registration type if a bus stop e.g. Timetable Information Point</xs:documentation>
														</xs:annotation>
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:enumeration value="PPT">
																	<xs:annotation>
																		<xs:documentation>Principal Point</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="TIP">
																	<xs:annotation>
																		<xs:documentation>Time Info Point</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="PTP">
																	<xs:annotation>
																		<xs:documentation>Principal and Time Info Point</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="OTH">
																	<xs:annotation>
																		<xs:documentation>Other Bus Stop</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="NA">
																	<xs:annotation>
																		<xs:documentation>Not Applicable - Used for Non BCT \ BCS Stop Types</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
															</xs:restriction>
														</xs:simpleType>
													</xs:element>
													<xs:element name="StopGroups" minOccurs="0">
														<xs:annotation>
															<xs:documentation>The groups that this stop is included in</xs:documentation>
														</xs:annotation>
														<xs:complexType>
															<xs:sequence>
																<xs:element name="GroupID" type="GroupIDType" maxOccurs="unbounded"/>
															</xs:sequence>
														</xs:complexType>
													</xs:element>
													<xs:element name="Notes" type="xs:string" minOccurs="0">
														<xs:annotation>
															<xs:documentation>Free form text about the stop</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="RecordStatus">
														<xs:annotation>
															<xs:documentation>Is the stop available for use - not necessarily 'in use'</xs:documentation>
														</xs:annotation>
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:enumeration value="ACT">
																	<xs:annotation>
																		<xs:documentation>Active</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="DEL">
																	<xs:annotation>
																		<xs:documentation>Deleted</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="PEN">
																	<xs:annotation>
																		<xs:documentation>Pending</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
															</xs:restriction>
														</xs:simpleType>
													</xs:element>
													<xs:element name="LocalityCentre" minOccurs="0">
														<xs:annotation>
															<xs:documentation>Can this stop be used for a generic locality enquiry</xs:documentation>
														</xs:annotation>
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:enumeration value="true"/>
																<xs:enumeration value="false"/>
																<xs:enumeration value="0"/>
																<xs:enumeration value="1"/>
															</xs:restriction>
														</xs:simpleType>
													</xs:element>
													<xs:element name="SMSNumber" type="SMSNumberType" minOccurs="0">
														<xs:annotation>
															<xs:documentation>An identifier for the stop to be used on an SMS telephone</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="LastChanged" type="xs:date"/>
												</xs:all>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="StopGroups" minOccurs="0">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="StopGroup" maxOccurs="unbounded">
											<xs:complexType>
												<xs:all>
													<xs:element name="GroupID" type="GroupIDType">
														<xs:annotation>
															<xs:documentation>Unique identifier for the group - prefixed with ATCO database code</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="GroupName" type="LimitedStringType">
														<xs:annotation>
															<xs:documentation>Common name for the group e.g. XYZ bus station</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="Type">
														<xs:annotation>
															<xs:documentation>Type of group</xs:documentation>
														</xs:annotation>
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:enumeration value="GPBS">
																	<xs:annotation>
																		<xs:documentation>Paired on street Bus \ Coach \ Tram stops</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="GCLS">
																	<xs:annotation>
																		<xs:documentation>Clustered on street Bus \ Coach \ Tram stops</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="GBCS">
																	<xs:annotation>
																		<xs:documentation>Bus \ Coach Station</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="GRLS">
																	<xs:annotation>
																		<xs:documentation>Rail station</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="GTMU">
																	<xs:annotation>
																		<xs:documentation>Tram \ Metro \ Underground Station</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="GFTD">
																	<xs:annotation>
																		<xs:documentation>Ferry Terminal \ Dock Building</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="GAIR">
																	<xs:annotation>
																		<xs:documentation>Airport Building</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="GMLT">
																	<xs:annotation>
																		<xs:documentation>Multimode Interchange</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="GOTH">
																	<xs:annotation>
																		<xs:documentation>Other Structure</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
																<xs:enumeration value="GCCH">
																	<xs:annotation>
																		<xs:documentation>Coach Coverage</xs:documentation>
																	</xs:annotation>
																</xs:enumeration>
															</xs:restriction>
														</xs:simpleType>
													</xs:element>
													<xs:element name="GridType" type="GridTypeType" minOccurs="0">
														<xs:annotation>
															<xs:documentation>Irish grid letter or blank</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="Easting" type="EastingType">
														<xs:annotation>
															<xs:documentation>OSGB  1 metre - 6 digits</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="Northing" type="NorthingType">
														<xs:annotation>
															<xs:documentation>OSGB  1 metre - 6/7 digits</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="Lon" type="xs:double" minOccurs="0">
														<xs:annotation>
															<xs:documentation>WGS84 position (decimal degrees)  - export only</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="Lat" type="xs:double" minOccurs="0">
														<xs:annotation>
															<xs:documentation>WGS84 position (decimal degrees)  - export only</xs:documentation>
														</xs:annotation>
													</xs:element>
													<xs:element name="LastChanged" type="xs:date"/>
												</xs:all>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="GroupInGroups" minOccurs="0">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="GroupInGroup" maxOccurs="unbounded">
											<xs:complexType>
												<xs:all>
													<xs:element name="ParentID" type="GroupIDType"/>
													<xs:element name="ChildID" type="GroupIDType"/>
												</xs:all>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="LastChanged" type="xs:date" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Date when this area was last updated - export only</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:all>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="ATCOCodeType">
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9]{3}[A-Za-z0-9]{2,9}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="GroupIDType">
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9]{3}G[A-Za-z0-9]{1,8}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="LimitedStringType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="48"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="EastingType">
		<xs:restriction base="xs:int">
			<xs:maxInclusive value="999999"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="NorthingType">
		<xs:restriction base="xs:int">
			<xs:maxInclusive value="1999999"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="GridTypeType">
		<xs:restriction base="xs:string">
			<xs:pattern value="[A-Z]{0,1}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="NatGazIDType">
		<xs:restriction base="xs:string">
			<xs:pattern value="[EN][0S][0-9]{6}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="NatGazType">
		<xs:all>
			<xs:element name="ID" type="NatGazIDType">
				<xs:annotation>
					<xs:documentation>Lowest level National Gazetteer locality ID</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Locality" type="LimitedStringType" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Name of the locality - export only</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="ParentLocality" type="LimitedStringType" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Name of parent locality - export only</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="GrandparentLocality" type="LimitedStringType" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Name of grandparent locality - export only</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:all>
	</xs:complexType>
	<xs:simpleType name="SMSNumberType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="12"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>
