<?xml version="1.0"?>
<!-- 
**********************************************************************
**********************************************************************
*                                                                    *
*                                                                    *
*    *****            JourneyWeb XMLSchema                  *****    *
*    *****           Southampton University                 *****    *
*                                                                    *
*                                                                    *
*                         Version 1.11                               *
*                                                                    *
*                                                                    *
**********************************************************************
**********************************************************************

**********************************************************************
**********************************************************************
*								     *
* Version History 						     *
*								     *
* Release Version 1.0						     *
* Original schema created in 1997 by Mr. G. P. Fingerle as part of   *
* PhD thesis (final publication in July, 2001)			     *
*								     *
* Release Version 1.1						     *
* edited Nov 10 2000 by Dr. A. C. Lock and Mr. G. P. Fingerle        * 
* - minor modifications 					     *
*    added journeyweb global root      			     	     *
*    added grid co-ordinates for points				     *
*    revised request procedure					     *
*								     *
* Release Version 1.11 (Current)				     *
* edited September 10, by Dr. G. P. Fingerle			     *
*    added comments and history				             *
*    some more minor modifications are to be proposed and released   *
*    in a version 1.12 and are likely to include 		     *
*	changing grid co-ordinates from optional to madatory	     *
*	adding attributes for points (principal, poi, street)	     *
*       other minor edits					     *
*								     *
**********************************************************************
**********************************************************************

  -->
<Schema name="JourneyWeb_V1.1" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">
	<!-- 
**********************************************************************
*    *****                     Global                       *****    *
**********************************************************************
  -->
	<ElementType name="Easting" dt:type="i4"/>
	<ElementType name="Northing" dt:type="i4"/>
	<ElementType name="Geocode" content="eltOnly" model="open">
		<AttributeType name="Precision" required="no" dt:type="enumeration" dt:values="1km 100m 10m 1m" default="1km"/>
		<attribute type="Precision"/>
		<element type="Easting" minOccurs="1" maxOccurs="1"/>
		<element type="Northing" minOccurs="1" maxOccurs="1"/>
	</ElementType>
	<!-- 
**********************************************************************
*    *****                     Request                      *****    *
**********************************************************************


  -->
	<ElementType name="PointsRequest" content="empty" model="open">
		<AttributeType name="LocalityID" dt:type="string" required="yes"/>
		<attribute type="LocalityID"/>
	</ElementType>
	<ElementType name="ExchangesRequest" content="empty" model="open">
		<AttributeType name="PointID" dt:type="string" required="yes"/>
		<attribute type="PointID"/>
	</ElementType>
	<ElementType name="OriginID" content="textOnly" model="open">
		<AttributeType name="IDMode" dt:type="enumeration" dt:values="air coach ferry local rail" default="local"/>
		<attribute type="IDMode"/>
	</ElementType>
	<ElementType name="DestinationID" content="textOnly" model="open">
		<AttributeType name="IDMode" dt:type="enumeration" dt:values="air coach ferry local rail" default="local"/>
		<attribute type="IDMode"/>
	</ElementType>
	<ElementType name="JourneyDate" content="textOnly" model="open"/>
	<ElementType name="JourneyTime" content="textOnly" model="open">
		<AttributeType name="ArrDep" dt:type="enumeration" dt:values="arrive depart" required="yes"/>
		<attribute type="ArrDep"/>
	</ElementType>
	<ElementType name="Range" content="textOnly" model="open">
		<AttributeType name="RangeFormat" dt:type="enumeration" dt:values="interval sequence" default="sequence"/>
		<attribute type="RangeFormat"/>
	</ElementType>
	<ElementType name="JourneysRequest" content="eltOnly" model="open">
		<AttributeType name="RequestID" dt:type="string" required="yes"/>
		<attribute type="RequestID"/>
		<element type="OriginID" minOccurs="1" maxOccurs="1"/>
		<element type="DestinationID" minOccurs="1" maxOccurs="1"/>
		<element type="JourneyDate" minOccurs="1" maxOccurs="1"/>
		<element type="JourneyTime" minOccurs="1" maxOccurs="1"/>
		<element type="Range" minOccurs="1" maxOccurs="1"/>
	</ElementType>
	<ElementType name="Request" content="eltOnly" model="open">
		<AttributeType name="Get" required="yes" dt:type="enumeration" dt:values="points exchanges journeys"/>
		<attribute type="Get"/>
		<element type="PointsRequest" minOccurs="0" maxOccurs="*"/>
		<element type="ExchangesRequest" minOccurs="0" maxOccurs="*"/>
		<element type="JourneysRequest" minOccurs="0" maxOccurs="*"/>
	</ElementType>
	<!-- 
**********************************************************************
*    *****                      Points                      *****    *
**********************************************************************


  -->
	<ElementType name="Name" content="textOnly" model="open"/>
	<ElementType name="ID" content="textOnly" model="open"/>
	<ElementType name="Point" content="eltOnly" model="open">
		<AttributeType name="Type" required="no" dt:type="enumeration" dt:values="timing_point"/>
		<attribute type="Type"/>
		<element type="Name" minOccurs="1" maxOccurs="1"/>
		<element type="ID" minOccurs="1" maxOccurs="1"/>
		<element type="Geocode" minOccurs="0" maxOccurs="1"/>
	</ElementType>
	<ElementType name="Points">
		<AttributeType name="LocalityID" required="yes" dt:type="string"/>
		<attribute type="LocalityID"/>
		<element type="Point" minOccurs="0" maxOccurs="*"/>
	</ElementType>
	<!-- 
**********************************************************************
*    *****                      Exchanges                   *****    *
**********************************************************************


  -->
	<ElementType name="ExchangeID" content="textOnly" model="open">
		<AttributeType name="IDMode" required="yes" dt:type="enumeration" dt:values="air coach ferry rail"/>
		<attribute type="IDMode"/>
	</ElementType>
	<ElementType name="Exchanges" content="eltOnly" model="open">
		<AttributeType name="PointID" required="yes" dt:type="string"/>
		<attribute type="PointID"/>
		<element type="ExchangeID" minOccurs="1" maxOccurs="*"/>
	</ElementType>
	<!-- 
**********************************************************************
*    *****                       Trip                       *****    *
**********************************************************************


  -->
	<ElementType name="Place" content="textOnly" model="open"/>
	<ElementType name="PointID" content="textOnly" model="open"/>
	<ElementType name="Bay" content="textOnly" model="open"/>
	<ElementType name="Origin" content="eltOnly" model="open">
		<element type="Place" minOccurs="1" maxOccurs="1"/>
		<element type="PointID" minOccurs="1" maxOccurs="1"/>
		<element type="Bay" minOccurs="0" maxOccurs="1"/>
		<element type="Geocode" minOccurs="0" maxOccurs="1"/>
	</ElementType>
	<ElementType name="Destination" content="eltOnly" model="open">
		<element type="Place" minOccurs="1" maxOccurs="1"/>
		<element type="PointID" minOccurs="1" maxOccurs="1"/>
		<element type="Bay" minOccurs="0" maxOccurs="1"/>
		<element type="Geocode" minOccurs="0" maxOccurs="1"/>
	</ElementType>
	<ElementType name="DepartTime" content="textOnly" model="open"/>
	<ElementType name="DepartDate" content="textOnly" model="open"/>
	<ElementType name="ArriveTime" content="textOnly" model="open"/>
	<ElementType name="ArriveDate" content="textOnly" model="open"/>
	<ElementType name="ExpiryDate" content="textOnly" model="open"/>
	<ElementType name="DaysOfOperation" content="textOnly" model="open"/>
	<ElementType name="Operator_Name" content="textOnly" model="open"/>
	<ElementType name="Service_Number" content="textOnly" model="open"/>
	<ElementType name="Destination_Board" content="textOnly" model="open"/>
	<ElementType name="Notes" content="textOnly" model="open"/>
	<ElementType name="Trip" content="eltOnly" model="open">
		<AttributeType name="Mode" dt:type="enumeration" dt:values="air bus coach commuter cycle ferry lrt metro rail RER taxi tube walk"/>
		<attribute type="Mode"/>
		<element type="Origin" minOccurs="1" maxOccurs="1"/>
		<element type="Destination" minOccurs="1" maxOccurs="1"/>
		<element type="DepartTime" minOccurs="1" maxOccurs="1"/>
		<element type="DepartDate" minOccurs="1" maxOccurs="1"/>
		<element type="ArriveTime" minOccurs="1" maxOccurs="1"/>
		<element type="ArriveDate" minOccurs="1" maxOccurs="1"/>
		<element type="ExpiryDate" minOccurs="0" maxOccurs="1"/>
		<element type="DaysOfOperation" minOccurs="1" maxOccurs="1"/>
		<element type="Operator_Name" minOccurs="1" maxOccurs="1"/>
		<element type="Service_Number" minOccurs="1" maxOccurs="1"/>
		<element type="Destination_Board" minOccurs="0" maxOccurs="1"/>
		<element type="Notes" minOccurs="0" maxOccurs="1"/>
	</ElementType>
	<!-- 
**********************************************************************
*    *****                     Journeys                     *****    *
**********************************************************************


  -->
	<ElementType name="Journey" content="eltOnly" model="open">
		<element type="Trip" minOccurs="1" maxOccurs="*"/>
	</ElementType>
	<ElementType name="Journeys" content="eltOnly" model="open">
		<AttributeType name="RequestID" required="yes" dt:type="string"/>
		<attribute type="RequestID"/>
		<element type="Journey" minOccurs="1" maxOccurs="*"/>
	</ElementType>
	<!-- 
**********************************************************************
*                                                                    *
*    *****                 JourneyWeb Root                  *****    *
*                                                                    *
**********************************************************************


  -->
	<ElementType name="JourneyWeb" content="eltOnly" model="open">
		<AttributeType name="Version" dt:type="string" default="1.1"/>
		<element type="Request" minOccurs="0" maxOccurs="*"/>
		<element type="Points" minOccurs="0" maxOccurs="*"/>
		<element type="Exchanges" minOccurs="0" maxOccurs="*"/>
		<element type="Journeys" minOccurs="0" maxOccurs="*"/>
	</ElementType>
</Schema>

