VMS DARS locations (DATEX II v2.3)

DATEX II shema

<xs:schema elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:D2LogicalModel="http://datex2.eu/schema/2/2_0" version="2.3" targetNamespace="http://datex2.eu/schema/2/2_0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="_ExtensionType">
    <xs:sequence>
      <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="_IntermediatePointOnLinearElement">
    <xs:sequence>
      <xs:element name="referent" type="D2LogicalModel:Referent" minOccurs="1" maxOccurs="1" />
    </xs:sequence>
    <xs:attribute name="index" type="xs:int" use="required" />
  </xs:complexType>
  <xs:complexType name="_LinearExtensionType">
    <xs:sequence>
      <xs:element name="openlrExtendedLinear" type="D2LogicalModel:OpenlrExtendedLinear" minOccurs="0" />
      <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="_PointExtensionType">
    <xs:sequence>
      <xs:element name="openlrExtendedPoint" type="D2LogicalModel:OpenlrExtendedPoint" minOccurs="0" />
      <xs:element name="pointExtended" type="D2LogicalModel:PointExtended" minOccurs="0" />
      <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="_VmsRecordPictogramDisplayAreaIndexVmsPictogramDisplayCharacteristics">
    <xs:sequence>
      <xs:element name="vmsPictogramDisplayCharacteristics" type="D2LogicalModel:VmsPictogramDisplayCharacteristics" minOccurs="1" maxOccurs="1" />
    </xs:sequence>
    <xs:attribute name="pictogramDisplayAreaIndex" type="xs:int" use="required" />
  </xs:complexType>
  <xs:complexType name="_VmsUnitRecordVmsIndexVmsRecord">
    <xs:sequence>
      <xs:element name="vmsRecord" type="D2LogicalModel:VmsRecord" minOccurs="1" maxOccurs="1" />
    </xs:sequence>
    <xs:attribute name="vmsIndex" type="xs:int" use="required" />
  </xs:complexType>
  <xs:complexType name="AffectedCarriagewayAndLanes">
    <xs:annotation>
      <xs:documentation>Supplementary positional information which details carriageway and lane locations. Several instances may exist where the element being described extends over more than one carriageway.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="carriageway" type="D2LogicalModel:CarriagewayEnum" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Indicates the section of carriageway to which the location relates.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="lane" type="D2LogicalModel:LaneEnum" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Indicates the specific lane to which the location relates.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="footpath" type="D2LogicalModel:Boolean" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Indicates whether the pedestrian footpath is the subject or part of the subject of the location. (True = footpath is subject)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="lengthAffected" type="D2LogicalModel:MetresAsFloat" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>This indicates the length of road measured in metres affected by the associated traffic element.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="affectedCarriagewayAndLanesExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="AlertCDirection">
    <xs:annotation>
      <xs:documentation>The direction of traffic flow along the road to which the information relates.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="alertCDirectionCoded" type="D2LogicalModel:AlertCDirectionEnum" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The direction of traffic flow to which the situation, traffic data or information is related. Positive is in the direction of coding of the road.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="alertCDirectionNamed" type="D2LogicalModel:MultilingualString" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>ALERT-C name of a direction e.g. Brussels -&gt; Lille.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="alertCDirectionSense" type="D2LogicalModel:Boolean" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Indicates for circular routes (i.e. valid only for ring roads) the sense in which navigation should be made from the primary location to the secondary location, to avoid ambiguity. TRUE indicates positive RDS direction, i.e. direction of coding of road.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="alertCDirectionExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="AlertCDirectionEnum">
    <xs:annotation>
      <xs:documentation>The direction of traffic flow concerned by a situation or traffic data. In ALERT-C the positive (resp. negative) direction corresponds to the positive offset direction within the RDS location table.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="both">
        <xs:annotation>
          <xs:documentation>Indicates that both directions of traffic flow are affected by the situation or relate to the traffic data.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="negative">
        <xs:annotation>
          <xs:documentation>The direction of traffic flow concerned by a situation or traffic data. In ALERT-C the negative direction corresponds to the negative offset direction within the RDS location table.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="positive">
        <xs:annotation>
          <xs:documentation>The direction of traffic flow concerned by a situation or traffic data. In ALERT-C the positive direction corresponds to the positive offset direction within the RDS location table.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="unknown">
        <xs:annotation>
          <xs:documentation>Unknown direction.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="AlertCLinear" abstract="true">
    <xs:annotation>
      <xs:documentation>A linear section along a road defined between two points on the road by reference to a pre-defined ALERT-C location table.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="alertCLocationCountryCode" type="D2LogicalModel:String" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>EBU country code.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="alertCLocationTableNumber" type="D2LogicalModel:String" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Number allocated to an ALERT-C table in a country. Ref. EN ISO 14819-3 for the allocation of a location table number.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="alertCLocationTableVersion" type="D2LogicalModel:String" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Version number associated with an ALERT-C table reference.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="alertCLinearExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="AlertCLinearByCode">
    <xs:annotation>
      <xs:documentation>A linear section along a road defined by reference to a linear section in a pre-defined ALERT-C location table.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:AlertCLinear">
        <xs:sequence>
          <xs:element name="alertCDirection" type="D2LogicalModel:AlertCDirection" />
          <xs:element name="locationCodeForLinearLocation" type="D2LogicalModel:AlertCLocation">
            <xs:annotation>
              <xs:documentation>Linear location defined by a specific Alert-C location.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="alertCLinearByCodeExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="AlertCLocation">
    <xs:annotation>
      <xs:documentation>Identification of a specific point, linear or area location in an ALERT-C location table.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="alertCLocationName" type="D2LogicalModel:MultilingualString" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Name of ALERT-C location.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="specificLocation" type="D2LogicalModel:AlertCLocationCode" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Unique code within the ALERT-C location table which identifies the specific point, linear or area location.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="alertCLocationExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="AlertCLocationCode">
    <xs:annotation>
      <xs:documentation>A positive integer number (between 1 and 63,487) which uniquely identifies a pre-defined Alert C location defined within an Alert-C table.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="D2LogicalModel:NonNegativeInteger" />
  </xs:simpleType>
  <xs:complexType name="AlertCMethod2Linear">
    <xs:annotation>
      <xs:documentation>A linear section along a road between two points, Primary and Secondary, which are pre-defined in an ALERT-C location table. Direction is FROM the Secondary point TO the Primary point, i.e. the Primary point is downstream of the Secondary point.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:AlertCLinear">
        <xs:sequence>
          <xs:element name="alertCDirection" type="D2LogicalModel:AlertCDirection" />
          <xs:element name="alertCMethod2PrimaryPointLocation" type="D2LogicalModel:AlertCMethod2PrimaryPointLocation" />
          <xs:element name="alertCMethod2SecondaryPointLocation" type="D2LogicalModel:AlertCMethod2SecondaryPointLocation" />
          <xs:element name="alertCMethod2LinearExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="AlertCMethod2Point">
    <xs:annotation>
      <xs:documentation>A single point on the road network defined by reference to a point in a pre-defined ALERT-C location table and which has an associated direction of traffic flow.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:AlertCPoint">
        <xs:sequence>
          <xs:element name="alertCDirection" type="D2LogicalModel:AlertCDirection" />
          <xs:element name="alertCMethod2PrimaryPointLocation" type="D2LogicalModel:AlertCMethod2PrimaryPointLocation" />
          <xs:element name="alertCMethod2PointExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="AlertCMethod2PrimaryPointLocation">
    <xs:annotation>
      <xs:documentation>The point (called Primary point) which is either a single point or at the downstream end of a linear road section. The point is specified by a reference to a point in a pre-defined ALERT-C location table.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="alertCLocation" type="D2LogicalModel:AlertCLocation" />
      <xs:element name="alertCMethod2PrimaryPointLocationExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="AlertCMethod2SecondaryPointLocation">
    <xs:annotation>
      <xs:documentation>The point (called Secondary point) which is at the upstream end of a linear road section. The point is specified by a reference to a point in a pre-defined ALERT-C location table.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="alertCLocation" type="D2LogicalModel:AlertCLocation" />
      <xs:element name="alertCMethod2SecondaryPointLocationExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="AlertCMethod4Linear">
    <xs:annotation>
      <xs:documentation>A linear section along a road between two points, Primary and Secondary, which are pre-defined ALERT-C locations plus offset distance. Direction is FROM the Secondary point TO the Primary point, i.e. the Primary point is downstream of the Secondary point.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:AlertCLinear">
        <xs:sequence>
          <xs:element name="alertCDirection" type="D2LogicalModel:AlertCDirection" />
          <xs:element name="alertCMethod4PrimaryPointLocation" type="D2LogicalModel:AlertCMethod4PrimaryPointLocation" />
          <xs:element name="alertCMethod4SecondaryPointLocation" type="D2LogicalModel:AlertCMethod4SecondaryPointLocation" />
          <xs:element name="alertCMethod4LinearExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="AlertCMethod4Point">
    <xs:annotation>
      <xs:documentation>A single point on the road network defined by reference to a point in a pre-defined ALERT-C location table plus an offset distance and which has an associated direction of traffic flow.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:AlertCPoint">
        <xs:sequence>
          <xs:element name="alertCDirection" type="D2LogicalModel:AlertCDirection" />
          <xs:element name="alertCMethod4PrimaryPointLocation" type="D2LogicalModel:AlertCMethod4PrimaryPointLocation" />
          <xs:element name="alertCMethod4PointExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="AlertCMethod4PrimaryPointLocation">
    <xs:annotation>
      <xs:documentation>The point (called Primary point) which is either a single point or at the downstream end of a linear road section. The point is specified by a reference to a point in a pre-defined ALERT-C location table plus a non-negative offset distance.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="alertCLocation" type="D2LogicalModel:AlertCLocation" />
      <xs:element name="offsetDistance" type="D2LogicalModel:OffsetDistance" />
      <xs:element name="alertCMethod4PrimaryPointLocationExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="AlertCMethod4SecondaryPointLocation">
    <xs:annotation>
      <xs:documentation>The point (called Secondary point) which is at the upstream end of a linear road section. The point is specified by a reference to a point in a pre-defined Alert-C location table plus a non-negative offset distance.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="alertCLocation" type="D2LogicalModel:AlertCLocation" />
      <xs:element name="offsetDistance" type="D2LogicalModel:OffsetDistance" />
      <xs:element name="alertCMethod4SecondaryPointLocationExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="AlertCPoint" abstract="true">
    <xs:annotation>
      <xs:documentation>A single point on the road network defined by reference to a pre-defined ALERT-C location table and which has an associated direction of traffic flow.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="alertCLocationCountryCode" type="D2LogicalModel:String" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>EBU country code.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="alertCLocationTableNumber" type="D2LogicalModel:String" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Number allocated to an ALERT-C table in a country. Ref. EN ISO 14819-3 for the allocation of a location table number.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="alertCLocationTableVersion" type="D2LogicalModel:String" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Version number associated with an ALERT-C table reference.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="alertCPointExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="AngleInDegrees">
    <xs:annotation>
      <xs:documentation>An integer number representing an angle in whole degrees between 0 and 359.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="D2LogicalModel:NonNegativeInteger" />
  </xs:simpleType>
  <xs:simpleType name="AreaOfInterestEnum">
    <xs:annotation>
      <xs:documentation>Types of areas of interest.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="continentWide">
        <xs:annotation>
          <xs:documentation>Area of the whole European continent.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="national">
        <xs:annotation>
          <xs:documentation>Whole area of the specific country.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="neighbouringCountries">
        <xs:annotation>
          <xs:documentation>Area of countries which are neighbouring the one specified.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="notSpecified">
        <xs:annotation>
          <xs:documentation>Non specified area.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="regional">
        <xs:annotation>
          <xs:documentation>Area of the local region.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="AxleFlowValue">
    <xs:annotation>
      <xs:documentation>A measured or calculated value of the flow rate of vehicle axles.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:DataValue">
        <xs:sequence>
          <xs:element name="axleFlowRate" type="D2LogicalModel:AxlesPerHour" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>A value of the flow rate of vehicle axles expressed in axles per hour.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="axleFlowValueExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="AxlesPerHour">
    <xs:annotation>
      <xs:documentation>Vehicle axles per hour.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="D2LogicalModel:NonNegativeInteger" />
  </xs:simpleType>
  <xs:simpleType name="Boolean">
    <xs:annotation>
      <xs:documentation>Boolean has the value space required to support the mathematical concept of binary-valued logic: {true, false}. </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:boolean" />
  </xs:simpleType>
  <xs:simpleType name="CarriagewayEnum">
    <xs:annotation>
      <xs:documentation>List of descriptors identifying specific carriageway details.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="connectingCarriageway">
        <xs:annotation>
          <xs:documentation>On the connecting carriageway.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="entrySlipRoad">
        <xs:annotation>
          <xs:documentation>On the entry slip road.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="exitSlipRoad">
        <xs:annotation>
          <xs:documentation>On the exit slip road.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="flyover">
        <xs:annotation>
          <xs:documentation>On the flyover, i.e. the section of road passing over another.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="leftHandFeederRoad">
        <xs:annotation>
          <xs:documentation>On the left hand feeder road.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="leftHandParallelCarriageway">
        <xs:annotation>
          <xs:documentation>On the left hand parallel carriageway.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="mainCarriageway">
        <xs:annotation>
          <xs:documentation>On the main carriageway.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="oppositeCarriageway">
        <xs:annotation>
          <xs:documentation>On the opposite carriageway.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="parallelCarriageway">
        <xs:annotation>
          <xs:documentation>On the adjacent parallel carriageway.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="rightHandFeederRoad">
        <xs:annotation>
          <xs:documentation>On the right hand feeder road.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="rightHandParallelCarriageway">
        <xs:annotation>
          <xs:documentation>On the right hand parallel carriageway.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="roundabout">
        <xs:annotation>
          <xs:documentation>On the roundabout.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="serviceRoad">
        <xs:annotation>
          <xs:documentation>On the adjacent service road.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="slipRoads">
        <xs:annotation>
          <xs:documentation>On the slip roads.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="underpass">
        <xs:annotation>
          <xs:documentation>On the underpass, i.e. the section of road passing under another.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="ComputationMethodEnum">
    <xs:annotation>
      <xs:documentation>Types of computational methods used in deriving data values for data sets.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="arithmeticAverageOfSamplesBasedOnAFixedNumberOfSamples">
        <xs:annotation>
          <xs:documentation>Arithmetic average of sample values based on a fixed number of samples.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="arithmeticAverageOfSamplesInATimePeriod">
        <xs:annotation>
          <xs:documentation>Arithmetic average of sample values in a time period.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="harmonicAverageOfSamplesInATimePeriod">
        <xs:annotation>
          <xs:documentation>Harmonic average of sample values in a time period.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="medianOfSamplesInATimePeriod">
        <xs:annotation>
          <xs:documentation>Median of sample values taken over a time period.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="movingAverageOfSamples">
        <xs:annotation>
          <xs:documentation>Moving average of sample values.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="ConcentrationOfVehiclesValue">
    <xs:annotation>
      <xs:documentation>A measured or calculated value of the concentration of vehicles on a unit stretch of road in a given direction.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:DataValue">
        <xs:sequence>
          <xs:element name="concentrationOfVehicles" type="D2LogicalModel:ConcentrationVehiclesPerKilometre" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>A value of traffic density expressed in the number of vehicles per kilometre of road.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="concentrationOfVehiclesValueExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="ConcentrationVehiclesPerKilometre">
    <xs:annotation>
      <xs:documentation>A measure of traffic density defined in number of vehicles per kilometre of road.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="D2LogicalModel:NonNegativeInteger" />
  </xs:simpleType>
  <xs:simpleType name="ConfidentialityValueEnum">
    <xs:annotation>
      <xs:documentation>Values of confidentiality.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="internalUse">
        <xs:annotation>
          <xs:documentation>For internal use only of the recipient organisation.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="noRestriction">
        <xs:annotation>
          <xs:documentation>No restriction on usage.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="restrictedToAuthorities">
        <xs:annotation>
          <xs:documentation>Restricted for use only by authorities.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="restrictedToAuthoritiesAndTrafficOperators">
        <xs:annotation>
          <xs:documentation>Restricted for use only by authorities and traffic operators.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="restrictedToAuthoritiesTrafficOperatorsAndPublishers">
        <xs:annotation>
          <xs:documentation>Restricted for use only by authorities, traffic operators and publishers (service providers).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="restrictedToAuthoritiesTrafficOperatorsAndVms">
        <xs:annotation>
          <xs:documentation>Restricted for use only by authorities, traffic operators, publishers (service providers) and variable message signs.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="CountryEnum">
    <xs:annotation>
      <xs:documentation>List of countries.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="at">
        <xs:annotation>
          <xs:documentation>Austria</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="be">
        <xs:annotation>
          <xs:documentation>Belgium</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="bg">
        <xs:annotation>
          <xs:documentation>Bulgaria</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ch">
        <xs:annotation>
          <xs:documentation>Switzerland</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="cs">
        <xs:annotation>
          <xs:documentation>Serbia and Montenegro</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="cy">
        <xs:annotation>
          <xs:documentation>Cyprus</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="cz">
        <xs:annotation>
          <xs:documentation>Czech Republic</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="de">
        <xs:annotation>
          <xs:documentation>Germany</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="dk">
        <xs:annotation>
          <xs:documentation>Denmark</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ee">
        <xs:annotation>
          <xs:documentation>Estonia</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="es">
        <xs:annotation>
          <xs:documentation>Spain</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="fi">
        <xs:annotation>
          <xs:documentation>Finland</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="fo">
        <xs:annotation>
          <xs:documentation>Faroe Islands</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="fr">
        <xs:annotation>
          <xs:documentation>France</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="gb">
        <xs:annotation>
          <xs:documentation>Great Britain</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="gg">
        <xs:annotation>
          <xs:documentation>Guernsey</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="gi">
        <xs:annotation>
          <xs:documentation>Gibraltar</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="gr">
        <xs:annotation>
          <xs:documentation>Greece</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="hr">
        <xs:annotation>
          <xs:documentation>Croatia</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="hu">
        <xs:annotation>
          <xs:documentation>Hungary</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ie">
        <xs:annotation>
          <xs:documentation>Ireland</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="im">
        <xs:annotation>
          <xs:documentation>Isle Of Man</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="is">
        <xs:annotation>
          <xs:documentation>Iceland</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="it">
        <xs:annotation>
          <xs:documentation>Italy</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="je">
        <xs:annotation>
          <xs:documentation>Jersey</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="li">
        <xs:annotation>
          <xs:documentation>Lichtenstein</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="lt">
        <xs:annotation>
          <xs:documentation>Lithuania</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="lu">
        <xs:annotation>
          <xs:documentation>Luxembourg</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="lv">
        <xs:annotation>
          <xs:documentation>Latvia</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ma">
        <xs:annotation>
          <xs:documentation>Morocco</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="mc">
        <xs:annotation>
          <xs:documentation>Monaco</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="mk">
        <xs:annotation>
          <xs:documentation>Macedonia</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="mt">
        <xs:annotation>
          <xs:documentation>Malta</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="nl">
        <xs:annotation>
          <xs:documentation>Netherlands</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="no">
        <xs:annotation>
          <xs:documentation>Norway</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="pl">
        <xs:annotation>
          <xs:documentation>Poland</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="pt">
        <xs:annotation>
          <xs:documentation>Portugal</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ro">
        <xs:annotation>
          <xs:documentation>Romania</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="se">
        <xs:annotation>
          <xs:documentation>Sweden</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="si">
        <xs:annotation>
          <xs:documentation>Slovenia</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="sk">
        <xs:annotation>
          <xs:documentation>Slovakia</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="sm">
        <xs:annotation>
          <xs:documentation>San Marino</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="tr">
        <xs:annotation>
          <xs:documentation>Turkey</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="va">
        <xs:annotation>
          <xs:documentation>Vatican City State</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="other">
        <xs:annotation>
          <xs:documentation>Other than as defined in this enumeration.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="d2LogicalModel" type="D2LogicalModel:D2LogicalModel">
    <xs:unique name="_d2LogicalModelVmsUnitTableConstraint">
      <xs:selector xpath=".//D2LogicalModel:vmsUnitTable" />
      <xs:field xpath="@id" />
      <xs:field xpath="@version" />
    </xs:unique>
    <xs:unique name="_d2LogicalModelVmsUnitRecordConstraint">
      <xs:selector xpath=".//D2LogicalModel:vmsUnitRecord" />
      <xs:field xpath="@id" />
      <xs:field xpath="@version" />
    </xs:unique>
  </xs:element>
  <xs:complexType name="D2LogicalModel">
    <xs:annotation>
      <xs:documentation>The DATEX II logical model comprising exchange, content payload and management sub-models.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="exchange" type="D2LogicalModel:Exchange" />
      <xs:element name="payloadPublication" type="D2LogicalModel:PayloadPublication" minOccurs="0" />
      <xs:element name="d2LogicalModelExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
    <xs:attribute name="modelBaseVersion" use="required" fixed="2" />
  </xs:complexType>
  <xs:complexType name="DataValue" abstract="true">
    <xs:annotation>
      <xs:documentation>A data value of something that can be measured or calculated. Any provided meta-data values specified in the attributes override any specified generic characteristics such as defined for a specific measurement in the MeasurementSiteTable. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="dataError" type="D2LogicalModel:Boolean" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Indication of whether the value is deemed to be erroneous by the supplier, (true = erroneous). If not present the data value is assumed to be ok. This may be used when automatic fault detection information relating to sensors is available.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="reasonForDataError" type="D2LogicalModel:MultilingualString" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The reason why the value is deemed to be erroneous by the supplier.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="dataValueExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
    <xs:attribute name="accuracy" type="D2LogicalModel:Percentage" use="optional">
      <xs:annotation>
        <xs:documentation>The extent to which the value is expected to be free from error, measured as a percentage of the data value. 100% means fully accurate.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="computationalMethod" type="D2LogicalModel:ComputationMethodEnum" use="optional">
      <xs:annotation>
        <xs:documentation>Method of computation which has been used to compute this data value.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="numberOfIncompleteInputs" type="D2LogicalModel:NonNegativeInteger" use="optional">
      <xs:annotation>
        <xs:documentation>The number of inputs detected but not completed during the sampling or measurement period; e.g. vehicles detected entering but not exiting the detection zone.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="numberOfInputValuesUsed" type="D2LogicalModel:NonNegativeInteger" use="optional">
      <xs:annotation>
        <xs:documentation>The number of input values used in the sampling or measurment period to determine the data value.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="smoothingFactor" type="D2LogicalModel:Float" use="optional">
      <xs:annotation>
        <xs:documentation>Coefficient required when a moving average is computed to give specific weights to the former average and the new data. A typical formula is, F being the smoothing factor: New average = (old average) F + (new data) (1 - F).</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="standardDeviation" type="D2LogicalModel:Float" use="optional">
      <xs:annotation>
        <xs:documentation>The standard deviation of the sample of input values from which this value was derived, measured in the units of the data value. </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="supplierCalculatedDataQuality" type="D2LogicalModel:Percentage" use="optional">
      <xs:annotation>
        <xs:documentation>A measure of data quality assigned to the value by the supplier. 100% equates to ideal/perfect quality. The method of calculation is supplier specific and needs to be agreed between supplier and client.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:simpleType name="DateTime">
    <xs:annotation>
      <xs:documentation>A combination of integer-valued year, month, day, hour, minute properties, a decimal-valued second property and a time zone property from which it is possible to determine the local time, the equivalent UTC time and the time zone offset from UTC.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:dateTime" />
  </xs:simpleType>
  <xs:complexType name="DateTimeValue">
    <xs:annotation>
      <xs:documentation>A measured or calculated value of an instance in time.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:DataValue">
        <xs:sequence>
          <xs:element name="dateTime" type="D2LogicalModel:DateTime" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>A time stamp defining an instance in time.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="dateTimeValueExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="DirectionEnum">
    <xs:annotation>
      <xs:documentation>List of directions of travel.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="allDirections">
        <xs:annotation>
          <xs:documentation>All directions (where more than two are applicable) at this point on the road network.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="bothWays">
        <xs:annotation>
          <xs:documentation>Both directions that are applicable at this point on the road network.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="clockwise">
        <xs:annotation>
          <xs:documentation>Clockwise.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="anticlockwise">
        <xs:annotation>
          <xs:documentation>Anti-clockwise.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="innerRing">
        <xs:annotation>
          <xs:documentation>Inner ring direction.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="outerRing">
        <xs:annotation>
          <xs:documentation>Outer ring direction.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="northBound">
        <xs:annotation>
          <xs:documentation>North bound general direction.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="northEastBound">
        <xs:annotation>
          <xs:documentation>North east bound general direction.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="eastBound">
        <xs:annotation>
          <xs:documentation>East bound general direction.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="southEastBound">
        <xs:annotation>
          <xs:documentation>South east bound general direction.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="southBound">
        <xs:annotation>
          <xs:documentation>South bound general direction.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="southWestBound">
        <xs:annotation>
          <xs:documentation>South west bound general direction.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="westBound">
        <xs:annotation>
          <xs:documentation>West bound general direction.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="northWestBound">
        <xs:annotation>
          <xs:documentation>North west bound general direction.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="inboundTowardsTown">
        <xs:annotation>
          <xs:documentation>Heading towards town centre direction of travel.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="outboundFromTown">
        <xs:annotation>
          <xs:documentation>Heading out of or away from the town centre direction of travel.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="unknown">
        <xs:annotation>
          <xs:documentation>Direction is unknown.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="opposite">
        <xs:annotation>
          <xs:documentation>Opposite direction to the normal direction of flow at this point on the road network.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="other">
        <xs:annotation>
          <xs:documentation>Other than as defined in this enumeration.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="DistanceAlongLinearElement" abstract="true">
    <xs:annotation>
      <xs:documentation>Distance of a point along a linear element either measured from the start node or a defined referent on that linear element, where the start node is relative to the element definition rather than the direction of traffic flow.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="distanceAlongLinearElementExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="DistanceFromLinearElementReferent">
    <xs:annotation>
      <xs:documentation>Distance of a point along a linear element measured from a "from referent" on the linear element, in the sense relative to the linear element definition rather than the direction of traffic flow or optionally towards a "towards referent".</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:DistanceAlongLinearElement">
        <xs:sequence>
          <xs:element name="distanceAlong" type="D2LogicalModel:MetresAsFloat" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>A measure of distance along a linear element.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="fromReferent" type="D2LogicalModel:Referent">
            <xs:annotation>
              <xs:documentation>A known location along the linear element from which the distanceAlong is measured, termed the "fromReferent" in ISO 19148. </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="towardsReferent" type="D2LogicalModel:Referent" minOccurs="0">
            <xs:annotation>
              <xs:documentation>A known location along the linear element towards which the distanceAlong is measured, termed the "towardsReferent" in ISO 19148.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="distanceFromLinearElementReferentExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="DistanceFromLinearElementStart">
    <xs:annotation>
      <xs:documentation>Distance of a point along a linear element measured from the start node of the linear element, where start node is relative to the element definition rather than the direction of traffic flow.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:DistanceAlongLinearElement">
        <xs:sequence>
          <xs:element name="distanceAlong" type="D2LogicalModel:MetresAsFloat" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>A measure of distance along a linear element.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="distanceFromLinearElementStartExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="DurationValue">
    <xs:annotation>
      <xs:documentation>A measured or calculated value of a period of time.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:DataValue">
        <xs:sequence>
          <xs:element name="duration" type="D2LogicalModel:Seconds" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>A period of time expressed in seconds.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="durationValueExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="ElaboratedDataFault">
    <xs:annotation>
      <xs:documentation>Details of a fault which is being reported for the related elaborated data.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:Fault">
        <xs:sequence>
          <xs:element name="elaboratedDataFault" type="D2LogicalModel:ElaboratedDataFaultEnum" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>The type of fault which is being reported for the specified elaborated data.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="elaboratedDataFaultExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="ElaboratedDataFaultEnum">
    <xs:annotation>
      <xs:documentation>Types of elaborated data faults.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="intermittentDataValues">
        <xs:annotation>
          <xs:documentation>Data values are being produced at intermittent intervals which are not consitent with the expected reporting interval.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="noDataValuesAvailable">
        <xs:annotation>
          <xs:documentation>No elaborated data values are currently available.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="spuriousUnreliableDataValues">
        <xs:annotation>
          <xs:documentation>Spurious or unreliable data values are being produced.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="unspecifiedOrUnknownFault">
        <xs:annotation>
          <xs:documentation>An unspecified or unknown fault exists in the process which is generating elaborated data.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="other">
        <xs:annotation>
          <xs:documentation>Other than as defined in this enumeration.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="Exchange">
    <xs:annotation>
      <xs:documentation>Details associated with the management of the exchange between the supplier and the client.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="supplierIdentification" type="D2LogicalModel:InternationalIdentifier" />
      <xs:element name="exchangeExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Fault">
    <xs:annotation>
      <xs:documentation>Information about a fault relating to a specific piece of equipment or process.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="faultIdentifier" type="D2LogicalModel:String" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Unique identifier of the fault.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="faultDescription" type="D2LogicalModel:String" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Textual description of the fault.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="faultCreationTime" type="D2LogicalModel:DateTime" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The date and time at which the fault was originally recorded/reported.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="faultLastUpdateTime" type="D2LogicalModel:DateTime" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The date and time at which the fault information as specified in this instance was last updated.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="faultSeverity" type="D2LogicalModel:FaultSeverityEnum" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The severity of the fault in terms of how it affects the usability of the equipment or the reliability of the data generated by the equipment.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="faultExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="FaultSeverityEnum">
    <xs:annotation>
      <xs:documentation>Classification of the severity of faults.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="low">
        <xs:annotation>
          <xs:documentation>The fault is of low severity and has only limited impact on the usability of the equipment or the value of the data generated by the equipment.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="medium">
        <xs:annotation>
          <xs:documentation>The fault is of medium severity which will significantly limit the usability of the equipment or devalue the usefulness of the data generated by the equipment.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="high">
        <xs:annotation>
          <xs:documentation>The fault is of high severity which will render the equipment unusable or any data generated by the equipment to be of no value.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="unknown">
        <xs:annotation>
          <xs:documentation>The fault is of unknown severity and hence its effect on the usability of the equipment or the usefulness of the data generated by the equipment can not be assessed.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Float">
    <xs:annotation>
      <xs:documentation>A floating point number whose value space consists of the values m × 2^e, where m is an integer whose absolute value is less than 2^24, and e is an integer between -149 and 104, inclusive.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:float" />
  </xs:simpleType>
  <xs:complexType name="GroupOfLocations" abstract="true">
    <xs:annotation>
      <xs:documentation>One or more physically separate locations. Multiple locations may be related, as in an itinerary (or route), or may be unrelated. It is not for identifying the same physical location using different Location objects for different referencing systems.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="groupOfLocationsExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="HeaderInformation">
    <xs:annotation>
      <xs:documentation>Management information relating to the data contained within a publication.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="areaOfInterest" type="D2LogicalModel:AreaOfInterestEnum" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The extent of the geographic area to which the related information should be distributed.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="confidentiality" type="D2LogicalModel:ConfidentialityValueEnum" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The extent to which the related information may be circulated, according to the recipient type. Recipients must comply with this confidentiality statement.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="informationStatus" type="D2LogicalModel:InformationStatusEnum" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The status of the related information (real, test, exercise ....).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="urgency" type="D2LogicalModel:UrgencyEnum" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>This indicates the urgency with which a message recipient or Client should distribute the enclosed information.  Urgency particularly relates to functions within RDS-TMC applications.  </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="headerInformationExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="HeightGradeEnum">
    <xs:annotation>
      <xs:documentation>List of height or vertical gradings of road sections.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="aboveGrade">
        <xs:annotation>
          <xs:documentation>Above or over the normal road grade elevation.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="atGrade">
        <xs:annotation>
          <xs:documentation>At the normal road grade elevation.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="belowGrade">
        <xs:annotation>
          <xs:documentation>Below or under the normal road grade elevation.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="InformationStatusEnum">
    <xs:annotation>
      <xs:documentation>Status of the related information (i.e. real, test or exercise).</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="real">
        <xs:annotation>
          <xs:documentation>The information is real. It is not a test or exercise.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="securityExercise">
        <xs:annotation>
          <xs:documentation>The information is part of an exercise which is for testing security.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="technicalExercise">
        <xs:annotation>
          <xs:documentation>The information is part of an exercise which includes tests of associated technical subsystems.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="test">
        <xs:annotation>
          <xs:documentation>The information is part of a test for checking the exchange of this type of information.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Integer">
    <xs:annotation>
      <xs:documentation>An integer number whose value space is the set {-2147483648, -2147483647, -2147483646, ..., -2, -1, 0, 1, 2, ..., 2147483645, 2147483646, 2147483647}.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:integer" />
  </xs:simpleType>
  <xs:complexType name="InternationalIdentifier">
    <xs:annotation>
      <xs:documentation>An identifier/name whose range is specific to the particular country.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="country" type="D2LogicalModel:CountryEnum" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>ISO 3166-1 two character country code.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="nationalIdentifier" type="D2LogicalModel:String" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Identifier or name unique within the specified country.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="internationalIdentifierExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Junction">
    <xs:annotation>
      <xs:documentation>Junction (on a highway), can also be an interchange or if applicable also a motorway service station (see junctionClassification).</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="junctionClassification" type="D2LogicalModel:JunctionClassificationEnum" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Explicit type of junction.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="junctionName" type="D2LogicalModel:MultilingualString" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Name of the junction.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="junctionNumber" type="D2LogicalModel:String" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Number of the junction, might also include letters (example: 23A).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="motorway" type="D2LogicalModel:Road" minOccurs="0">
        <xs:annotation>
          <xs:documentation>A detailed identification of the motorway the junction belongs to.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="destinationMotorway" type="D2LogicalModel:Road" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>In case of any type of intersection, the destination motorway(s) can be defined.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="junctionExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="JunctionClassificationEnum">
    <xs:annotation>
      <xs:documentation>Explicit type of a junction.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="threeWayInterchange">
        <xs:annotation>
          <xs:documentation>One motorway merging into another (with three legs in total).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="interchange">
        <xs:annotation>
          <xs:documentation>Usually two crossing motorways (four legs, but can be even more).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="motorwayConnection">
        <xs:annotation>
          <xs:documentation>Beginning or end of a motorway (e.g. changeover to smaller road).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="junction">
        <xs:annotation>
          <xs:documentation>Entrance and exit on a motorway.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="temporaryJunction">
        <xs:annotation>
          <xs:documentation>Entrance and exit on a motorway, reserved either for emergency and service or on a temporary basis.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="borderCrossing">
        <xs:annotation>
          <xs:documentation>Motorway crossing a border (between counties, countries, states, ...).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="junctionInOneDirection">
        <xs:annotation>
          <xs:documentation>Entry and Exit on a motorway, where just one direction of the motorway is accessible.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="operationalServiceJunction">
        <xs:annotation>
          <xs:documentation>Junction accessible only for operational services.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="other">
        <xs:annotation>
          <xs:documentation>Other.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="LaneEnum">
    <xs:annotation>
      <xs:documentation>List of descriptors identifying specific lanes.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="emergencyLane">
        <xs:annotation>
          <xs:documentation>In the emergency lane.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="leftLane">
        <xs:annotation>
          <xs:documentation>In the left lane.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="middleLane">
        <xs:annotation>
          <xs:documentation>In the middle lane.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="rightLane">
        <xs:annotation>
          <xs:documentation>In the right lane.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Language">
    <xs:annotation>
      <xs:documentation>A language datatype, identifies a specified language by an ISO 639-1 2-alpha / ISO 639-2 3-alpha code.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:language" />
  </xs:simpleType>
  <xs:complexType name="Linear">
    <xs:annotation>
      <xs:documentation>A linear section along a single road with optional directionality defined between two points on the same road. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:NetworkLocation">
        <xs:sequence>
          <xs:element name="tpegLinearLocation" type="D2LogicalModel:TpegLinearLocation" minOccurs="0" />
          <xs:element name="alertCLinear" type="D2LogicalModel:AlertCLinear" minOccurs="0" />
          <xs:element name="linearWithinLinearElement" type="D2LogicalModel:LinearWithinLinearElement" minOccurs="0" />
          <xs:element name="linearExtension" type="D2LogicalModel:_LinearExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="LinearElement">
    <xs:annotation>
      <xs:documentation>A linear element along a single linear object, consistent with ISO 19148 definitions. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="roadName" type="D2LogicalModel:MultilingualString" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Name of the road of which the linear element forms a part.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="roadNumber" type="D2LogicalModel:String" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Identifier/number of the road of which the linear element forms a part.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="linearElementReferenceModel" type="D2LogicalModel:String" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The identifier of a road network reference model which segments the road network according to specific business rules.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="linearElementReferenceModelVersion" type="D2LogicalModel:String" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The version of the identified road network reference model.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="linearElementNature" type="D2LogicalModel:LinearElementNatureEnum" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>An indication of the nature of the linear element.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="linearElementExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="LinearElementByCode">
    <xs:annotation>
      <xs:documentation>A linear element along a single linear object defined by its identifier or code in a road network reference model (specified in LinearElement class) which segments the road network according to specific business rules.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:LinearElement">
        <xs:sequence>
          <xs:element name="linearElementIdentifier" type="D2LogicalModel:String" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>An identifier or code of a linear element (or link) in the road network reference model that is specified in the LinearElement class. </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="linearElementByCodeExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="LinearElementByPoints">
    <xs:annotation>
      <xs:documentation>A linear element along a single linear object defined by its start and end points.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:LinearElement">
        <xs:sequence>
          <xs:element name="startPointOfLinearElement" type="D2LogicalModel:Referent">
            <xs:annotation>
              <xs:documentation>The referent at a known location on the linear object which defines the start of the linear element.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="intermediatePointOnLinearElement" type="D2LogicalModel:_IntermediatePointOnLinearElement" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>A referent at a known location on the linear object which is neither the start or end of the linear element.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="endPointOfLinearElement" type="D2LogicalModel:Referent">
            <xs:annotation>
              <xs:documentation>The referent at a known location on the linear object which defines the end of the linear element.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="linearElementByPointsExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="LinearElementNatureEnum">
    <xs:annotation>
      <xs:documentation>List of indicative natures of linear elements.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="road">
        <xs:annotation>
          <xs:documentation>The nature of the linear element is a road.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="roadSection">
        <xs:annotation>
          <xs:documentation>The nature of the linear element is a section of a road.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="slipRoad">
        <xs:annotation>
          <xs:documentation>The nature of the linear element is a slip road.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="other">
        <xs:annotation>
          <xs:documentation>Other than as defined in this enumeration.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="LinearReferencingDirectionEnum">
    <xs:annotation>
      <xs:documentation>Directions of traffic flow relative to the direction in which the linear element is defined.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="both">
        <xs:annotation>
          <xs:documentation>Indicates that both directions of traffic flow are affected by the situation or relate to the traffic data.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="opposite">
        <xs:annotation>
          <xs:documentation>Indicates that the direction of traffic flow affected by the situation or related to the traffic data is in the opposite sense to the direction in which the linear element is defined.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="aligned">
        <xs:annotation>
          <xs:documentation>Indicates that the direction of traffic flow affected by the situation or related to the traffic data is in the same sense as the direction in which the linear element is defined.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="unknown">
        <xs:annotation>
          <xs:documentation>Indicates that the direction of traffic flow affected by the situation or related to the traffic data is unknown.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="LinearWithinLinearElement">
    <xs:annotation>
      <xs:documentation>A linear section along a linear element where the linear element is either a part of or the whole of a linear object (i.e. a road), consistent with ISO 19148 definitions. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="administrativeAreaOfLinearSection" type="D2LogicalModel:MultilingualString" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Identification of the road administration area which contains the specified linear section.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="directionBoundOnLinearSection" type="D2LogicalModel:DirectionEnum" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The direction of traffic flow on the linear section in terms of general destination direction.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="directionRelativeOnLinearSection" type="D2LogicalModel:LinearReferencingDirectionEnum" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The direction of traffic flow on the linear section relative to the direction in which the linear element is defined.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="heightGradeOfLinearSection" type="D2LogicalModel:HeightGradeEnum" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Identification of whether the linear section that is part of the linear element is at, above or below the normal elevation of a linear element of that type (e.g. road or road section) at that location, typically used to indicate "grade" separation.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="linearElement" type="D2LogicalModel:LinearElement" />
      <xs:element name="fromPoint" type="D2LogicalModel:DistanceAlongLinearElement">
        <xs:annotation>
          <xs:documentation>A point on the linear element that defines the start node of the linear section.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="toPoint" type="D2LogicalModel:DistanceAlongLinearElement">
        <xs:annotation>
          <xs:documentation>A point on the linear element that defines the end node of the linear section.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="linearWithinLinearElementExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Location" abstract="true">
    <xs:annotation>
      <xs:documentation>The specification of a location either on a network (as a point or a linear location) or as an area. This may be provided in one or more referencing systems.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:GroupOfLocations">
        <xs:sequence>
          <xs:element name="locationForDisplay" type="D2LogicalModel:PointCoordinates" minOccurs="0">
            <xs:annotation>
              <xs:documentation>A location which may be used by clients for visual display on user interfaces.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="locationExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="LocationDescriptorEnum">
    <xs:annotation>
      <xs:documentation>List of descriptors to help to identify a specific location.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="aroundABendInRoad">
        <xs:annotation>
          <xs:documentation>Around a bend in the road.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="atMotorwayInterchange">
        <xs:annotation>
          <xs:documentation>At a motorway interchange.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="atRestArea">
        <xs:annotation>
          <xs:documentation>At rest area off the carriageway.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="atServiceArea">
        <xs:annotation>
          <xs:documentation>At service area.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="atTollPlaza">
        <xs:annotation>
          <xs:documentation>At toll plaza.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="atTunnelEntryOrExit">
        <xs:annotation>
          <xs:documentation>At entry or exit of tunnel.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="inbound">
        <xs:annotation>
          <xs:documentation>On the carriageway or lane which is inbound towards the centre of the town or city.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="inGallery">
        <xs:annotation>
          <xs:documentation>In gallery.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="inTheCentre">
        <xs:annotation>
          <xs:documentation>In the centre of the roadway.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="inTheOppositeDirection">
        <xs:annotation>
          <xs:documentation>In the opposite direction.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="inTunnel">
        <xs:annotation>
          <xs:documentation>In tunnel.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="onBorder">
        <xs:annotation>
          <xs:documentation>On border crossing.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="onBridge">
        <xs:annotation>
          <xs:documentation>On bridge.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="onConnector">
        <xs:annotation>
          <xs:documentation>On connecting carriageway between two different roads or road sections.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="onElevatedSection">
        <xs:annotation>
          <xs:documentation>On elevated section of road.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="onFlyover">
        <xs:annotation>
          <xs:documentation>On flyover, i.e. on section of road over another road.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="onIceRoad">
        <xs:annotation>
          <xs:documentation>On ice road.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="onLevelCrossing">
        <xs:annotation>
          <xs:documentation>On level-crossing.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="onLinkRoad">
        <xs:annotation>
          <xs:documentation>On road section linking two different roads.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="onPass">
        <xs:annotation>
          <xs:documentation>On mountain pass.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="onRoundabout">
        <xs:annotation>
          <xs:documentation>On roundabout.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="onTheLeft">
        <xs:annotation>
          <xs:documentation>On the left of the roadway.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="onTheRight">
        <xs:annotation>
          <xs:documentation>On the right of the roadway.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="onTheRoadway">
        <xs:annotation>
          <xs:documentation>On the roadway.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="onUndergroundSection">
        <xs:annotation>
          <xs:documentation>On underground section of road.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="onUnderpass">
        <xs:annotation>
          <xs:documentation>On underpass, i.e. section of road which passes under another road.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="outbound">
        <xs:annotation>
          <xs:documentation>On the carriageway or lane which is outbound from the centre of the town or city.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="overCrestOfHill">
        <xs:annotation>
          <xs:documentation>Over the crest of a hill.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="withinJunction">
        <xs:annotation>
          <xs:documentation>On the main carriageway within a junction between exit slip road and entry slip road.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="MeasurementEquipmentFault">
    <xs:annotation>
      <xs:documentation>Details of a fault which is being reported for the related measurement equipment.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:Fault">
        <xs:sequence>
          <xs:element name="measurementEquipmentFault" type="D2LogicalModel:MeasurementEquipmentFaultEnum" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>The type of fault which is being reported for the specified measurement equipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="measurementEquipmentFaultExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="MeasurementEquipmentFaultEnum">
    <xs:annotation>
      <xs:documentation>Types of measurement equipment faults.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="intermittentDataValues">
        <xs:annotation>
          <xs:documentation>Data values are being produced at intermittent intervals which are not consitent with the expected reporting interval.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="noDataValuesAvailable">
        <xs:annotation>
          <xs:documentation>No measured data values are currently available.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="spuriousUnreliableDataValues">
        <xs:annotation>
          <xs:documentation>Spurious or unreliable data values are being produced.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="unspecifiedOrUnknownFault">
        <xs:annotation>
          <xs:documentation>An unspecified or unknown fault exists in the measurement equipment.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="other">
        <xs:annotation>
          <xs:documentation>Other than as defined in this enumeration.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="MetresAsFloat">
    <xs:annotation>
      <xs:documentation>A measure of distance defined in metres in a floating point format.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="D2LogicalModel:Float" />
  </xs:simpleType>
  <xs:simpleType name="MetresAsNonNegativeInteger">
    <xs:annotation>
      <xs:documentation>A measure of distance defined in metres in a non negative integer format.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="D2LogicalModel:NonNegativeInteger" />
  </xs:simpleType>
  <xs:complexType name="MultilingualString">
    <xs:sequence>
      <xs:element name="values">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="value" type="D2LogicalModel:MultilingualStringValue" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="MultilingualStringValue">
    <xs:simpleContent>
      <xs:extension base="D2LogicalModel:MultilingualStringValueType">
        <xs:attribute name="lang" type="xs:language" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:simpleType name="MultilingualStringValueType">
    <xs:restriction base="xs:string">
      <xs:maxLength value="1024" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="NetworkLocation" abstract="true">
    <xs:annotation>
      <xs:documentation>The specification of a location on a network (as a point or a linear location).</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:Location">
        <xs:sequence>
          <xs:element name="supplementaryPositionalDescription" type="D2LogicalModel:SupplementaryPositionalDescription" minOccurs="0" />
          <xs:element name="networkLocationExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="NonNegativeInteger">
    <xs:annotation>
      <xs:documentation>An integer number whose value space is the set {0, 1, 2, ..., 2147483645, 2147483646, 2147483647}.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:nonNegativeInteger" />
  </xs:simpleType>
  <xs:complexType name="OccupancyChangeValue">
    <xs:annotation>
      <xs:documentation>A measured or calculated value of change of occupied parking spaces expressed as integer.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:DataValue">
        <xs:sequence>
          <xs:element name="occupancyChange" type="D2LogicalModel:Integer" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>A measured or calculated absolut change of occupied parking spaces within a specified time expressed as integer.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="occupancyChangeValueExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="OffsetDistance">
    <xs:annotation>
      <xs:documentation>The non negative offset distance from the ALERT-C referenced point to the actual point.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="offsetDistance" type="D2LogicalModel:MetresAsNonNegativeInteger" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The non negative offset distance from the ALERT-C referenced point to the actual point. The ALERT-C locations in the Primary and Secondary locations must always encompass the linear section being specified, thus Offset Distance is towards the other point.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="offsetDistanceExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="OpenlrBaseLocationReferencePoint" abstract="true">
    <xs:annotation>
      <xs:documentation>Base class used to hold data about a reference point.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="openlrCoordinate" type="D2LogicalModel:PointCoordinates" />
      <xs:element name="openlrLineAttributes" type="D2LogicalModel:OpenlrLineAttributes" />
      <xs:element name="openlrBaseLocationReferencePointExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="OpenlrBasePointLocation" abstract="true">
    <xs:annotation>
      <xs:documentation>Holds common data that are used both in OpenlrPointAccessPoint and OpenlrPointAlongLine.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="openlrSideOfRoad" type="D2LogicalModel:OpenlrSideOfRoadEnum" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Side of road</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="openlrOrientation" type="D2LogicalModel:OpenlrOrientationEnum" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Orientation</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="openlrPositiveOffset" type="D2LogicalModel:MetresAsNonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The positive offset along the line of the location.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="openlrLocationReferencePoint" type="D2LogicalModel:OpenlrLocationReferencePoint" />
      <xs:element name="openlrLastLocationReferencePoint" type="D2LogicalModel:OpenlrLastLocationReferencePoint" />
      <xs:element name="openlrBasePointLocationExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="OpenlrExtendedLinear">
    <xs:annotation>
      <xs:documentation>Extension class for OpenLR Line location reference</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="firstDirection" type="D2LogicalModel:OpenlrLineLocationReference">
        <xs:annotation>
          <xs:documentation>First OpenLR reference in first/main direction.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="oppositeDirection" type="D2LogicalModel:OpenlrLineLocationReference" minOccurs="0">
        <xs:annotation>
          <xs:documentation>If both direction, this is tha reference in the opposite direction against firstDirection.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="OpenlrExtendedPoint">
    <xs:annotation>
      <xs:documentation>Extension class for OpenLR point.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="openlrPointLocationReference" type="D2LogicalModel:OpenlrPointLocationReference" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="OpenlrFormOfWayEnum">
    <xs:annotation>
      <xs:documentation>Enumeration of for of way</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="undefined">
        <xs:annotation>
          <xs:documentation>undefined</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="motorway">
        <xs:annotation>
          <xs:documentation>motorway</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="multipleCarriageway">
        <xs:annotation>
          <xs:documentation>multipleCarrigeway</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="singleCarriageway">
        <xs:annotation>
          <xs:documentation>single carrigeway</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="roundabout">
        <xs:annotation>
          <xs:documentation>roadabout</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="slipRoad">
        <xs:annotation>
          <xs:documentation>sliproad</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="trafficSquare">
        <xs:annotation>
          <xs:documentation>traffic square</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="other">
        <xs:annotation>
          <xs:documentation>other</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="OpenlrFunctionalRoadClassEnum">
    <xs:annotation>
      <xs:documentation>Enemuration of functional road class</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="FRC0">
        <xs:annotation>
          <xs:documentation>Main road, highest importance</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FRC1">
        <xs:annotation>
          <xs:documentation>First class road</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FRC2">
        <xs:annotation>
          <xs:documentation>Second class road</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FRC3">
        <xs:annotation>
          <xs:documentation>Third class road</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FRC4">
        <xs:annotation>
          <xs:documentation>Fourth class road</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FRC5">
        <xs:annotation>
          <xs:documentation>Fifth class road</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FRC6">
        <xs:annotation>
          <xs:documentation>Sixth class road</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FRC7">
        <xs:annotation>
          <xs:documentation>Other class road, lowest importance</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="OpenlrGeoCoordinate">
    <xs:annotation>
      <xs:documentation>A geo-coordinate pair is a position in a map defined by its longitude and latitude coordinate values.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="openlrCoordinate" type="D2LogicalModel:PointCoordinates" />
      <xs:element name="openlrGeoCoordinateExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="OpenlrLastLocationReferencePoint">
    <xs:annotation>
      <xs:documentation>The sequence of location reference points is terminated by a last location reference point.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:OpenlrBaseLocationReferencePoint">
        <xs:sequence>
          <xs:element name="openlrLastLocationReferencePointExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="OpenlrLineAttributes">
    <xs:annotation>
      <xs:documentation>Line attributes are part of a location reference point and consists of functional road class (FRC),form of way (FOW) and bearing (BEAR) data.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="openlrFunctionalRoadClass" type="D2LogicalModel:OpenlrFunctionalRoadClassEnum" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The functional road class (FRC) can hold eight different values as described in the logical format.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="openlrFormOfWay" type="D2LogicalModel:OpenlrFormOfWayEnum" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The form of way (FOW) can hold eight different values as described in the logical format.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="openlrBearing" type="D2LogicalModel:AngleInDegrees" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>defines the bearing field as an integer value between 0 and 360 whereby “0” is included and “360” is excluded from that range.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="openlrLineAttributesExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="OpenlrLineLocationReference">
    <xs:annotation>
      <xs:documentation>A LineLocationReference is defined by an ordered sequence of location reference points and a terminating last location reference point.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="openlrLocationReferencePoint" type="D2LogicalModel:OpenlrLocationReferencePoint" maxOccurs="unbounded" />
      <xs:element name="openlrLastLocationReferencePoint" type="D2LogicalModel:OpenlrLastLocationReferencePoint" />
      <xs:element name="openlrOffsets" type="D2LogicalModel:OpenlrOffsets" minOccurs="0" />
      <xs:element name="openlrLineLocationReferenceExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="OpenlrLocationReferencePoint">
    <xs:annotation>
      <xs:documentation>The basis of a location reference is a sequence of location reference points (LRPs).</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:OpenlrBaseLocationReferencePoint">
        <xs:sequence>
          <xs:element name="openlrPathAttributes" type="D2LogicalModel:OpenlrPathAttributes" />
          <xs:element name="openlrLocationReferencePointExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="OpenlrOffsets">
    <xs:annotation>
      <xs:documentation>Offsets are used to locate the start and end of a location more precisely than bounding to the nodes in a network.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="openlrPositiveOffset" type="D2LogicalModel:MetresAsNonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The positive offset along the line of the location.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="openlrNegativeOffset" type="D2LogicalModel:MetresAsNonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The negative offset along the line of the location.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="openlrOffsetsExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="OpenlrOrientationEnum">
    <xs:annotation>
      <xs:documentation>Enumeration of side of road</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="noOrientationOrUnknown">
        <xs:annotation>
          <xs:documentation>No orientation or unknown</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="withLineDirection">
        <xs:annotation>
          <xs:documentation>With line direction</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="againstLineDirection">
        <xs:annotation>
          <xs:documentation>Against line direction</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="both">
        <xs:annotation>
          <xs:documentation>Both directions</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="OpenlrPathAttributes">
    <xs:annotation>
      <xs:documentation>The field path attributes is part of a location reference point (except for the last location reference point) and consists of lowest functional road class (LFRCNP) and distance to next point (DNP) data.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="openlrLowestFRCToNextLRPoint" type="D2LogicalModel:OpenlrFunctionalRoadClassEnum" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The lowest FRC to the next point indicates the lowest functional road class used in the location reference path to the next LR-point.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="openlrDistanceToNextLRPoint" type="D2LogicalModel:NonNegativeInteger" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The DNP attribute measures the distance in meters between two consecutive LR-points along the location reference path as described in the logical format.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="openlrPathAttributesExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="OpenlrPointAlongLine">
    <xs:annotation>
      <xs:documentation>Point along a line</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:OpenlrBasePointLocation">
        <xs:sequence>
          <xs:element name="openlrPointAlongLineExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="OpenlrPointLocationReference">
    <xs:annotation>
      <xs:documentation>A point location is a zero-dimensional element in a map that specifies a geometric location.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="openlrGeoCoordinate" type="D2LogicalModel:OpenlrGeoCoordinate" minOccurs="0" />
      <xs:element name="openlrPoiWithAccessPoint" type="D2LogicalModel:OpenlrPoiWithAccessPoint" minOccurs="0" />
      <xs:element name="openlrPointAlongLine" type="D2LogicalModel:OpenlrPointAlongLine" minOccurs="0" />
      <xs:element name="openlrPointLocationReferenceExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="OpenlrPoiWithAccessPoint">
    <xs:annotation>
      <xs:documentation>Point along line with access is a point location which is defined by a line,an offset value and a coordinate.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:OpenlrBasePointLocation">
        <xs:sequence>
          <xs:element name="openlrCoordinate" type="D2LogicalModel:PointCoordinates">
            <xs:annotation>
              <xs:documentation>The coordinate of the actual point of interest</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="openlrPoiWithAccessPointExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="OpenlrSideOfRoadEnum">
    <xs:annotation>
      <xs:documentation>Enumeration of side of road</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="onRoadOrUnknown">
        <xs:annotation>
          <xs:documentation>On road or unknown</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="right">
        <xs:annotation>
          <xs:documentation>right</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="left">
        <xs:annotation>
          <xs:documentation>left</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="both">
        <xs:annotation>
          <xs:documentation>both</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="PassengerCarUnitsPerHour">
    <xs:annotation>
      <xs:documentation>Passenger car units per hour.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="D2LogicalModel:NonNegativeInteger" />
  </xs:simpleType>
  <xs:complexType name="PayloadPublication" abstract="true">
    <xs:annotation>
      <xs:documentation>A payload publication of traffic related information or associated management information created at a specific point in time that can be exchanged via a DATEX II interface.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="publicationTime" type="D2LogicalModel:DateTime" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Date/time at which the payload publication was created.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="publicationCreator" type="D2LogicalModel:InternationalIdentifier" />
      <xs:element name="payloadPublicationExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
    <xs:attribute name="lang" type="D2LogicalModel:Language" use="required">
      <xs:annotation>
        <xs:documentation>The default language used throughout the payload publication.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="PcuFlowValue">
    <xs:annotation>
      <xs:documentation>A measured or calculated value of the flow rate of passenger car units.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:DataValue">
        <xs:sequence>
          <xs:element name="pcuFlowRate" type="D2LogicalModel:PassengerCarUnitsPerHour" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>A value of passenger car unit flow rate expressed in passenger car units per hour.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="pcuFlowValueExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="Percentage">
    <xs:annotation>
      <xs:documentation>A measure of percentage.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="D2LogicalModel:Float" />
  </xs:simpleType>
  <xs:complexType name="PercentageDistanceAlongLinearElement">
    <xs:annotation>
      <xs:documentation>Distance of a point along a linear element measured from the start node expressed as a percentage of the whole length of the linear element, where start node is relative to the element definition rather than the direction of traffic flow.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:DistanceAlongLinearElement">
        <xs:sequence>
          <xs:element name="percentageDistanceAlong" type="D2LogicalModel:Percentage" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>A measure of distance along a linear element from the start of the element expressed as a percentage of the total length of the linear object.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="percentageDistanceAlongLinearElementExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="PhysicalMountingEnum">
    <xs:annotation>
      <xs:documentation>The ways in which equipments such as VMS are mounted or deployed on the road.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="centralReservationMounted">
        <xs:annotation>
          <xs:documentation>Equipment mounted in the central reservation.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="gantryMounted">
        <xs:annotation>
          <xs:documentation>Equipment mounted on an overhead gantry across the roadway.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="overheadBridgeMounted">
        <xs:annotation>
          <xs:documentation>Equipment mounted overhead on a bridge structure.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="roadsideCantileverMounted">
        <xs:annotation>
          <xs:documentation>Equipment mounted on a cantilever from the roadside.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="roadsideMounted">
        <xs:annotation>
          <xs:documentation>Equipment mounted at the roadside.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="trailerMounted">
        <xs:annotation>
          <xs:documentation>Equipment mounted on a movable trailer.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="tunnelEntranceMounted">
        <xs:annotation>
          <xs:documentation>Equipment mounted on the entrance to a tunnel.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="vehicleMounted">
        <xs:annotation>
          <xs:documentation>Equipment mounted on a vehicle.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="Point">
    <xs:annotation>
      <xs:documentation>A single geospatial point.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:NetworkLocation">
        <xs:sequence>
          <xs:element name="tpegPointLocation" type="D2LogicalModel:TpegPointLocation" minOccurs="0" />
          <xs:element name="alertCPoint" type="D2LogicalModel:AlertCPoint" minOccurs="0" />
          <xs:element name="pointAlongLinearElement" type="D2LogicalModel:PointAlongLinearElement" minOccurs="0" />
          <xs:element name="pointByCoordinates" type="D2LogicalModel:PointByCoordinates" minOccurs="0" />
          <xs:element name="pointExtension" type="D2LogicalModel:_PointExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="PointAlongLinearElement">
    <xs:annotation>
      <xs:documentation>A point on a linear element where the linear element is either a part of or the whole of a linear object (i.e. a road), consistent with ISO 19148 definitions. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="administrativeAreaOfPoint" type="D2LogicalModel:MultilingualString" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Identification of the road administration area which contains the specified point.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="directionBoundAtPoint" type="D2LogicalModel:DirectionEnum" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The direction of traffic flow at the specified point in terms of general destination direction.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="directionRelativeAtPoint" type="D2LogicalModel:LinearReferencingDirectionEnum" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The direction of traffic flow at the specified point relative to the direction in which the linear element is defined.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="heightGradeOfPoint" type="D2LogicalModel:HeightGradeEnum" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Identification of whether the point on the linear element is at, above or below the normal elevation of a linear element of that type (e.g. road or road section) at that location, typically used to indicate "grade" separation.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="linearElement" type="D2LogicalModel:LinearElement" />
      <xs:element name="distanceAlongLinearElement" type="D2LogicalModel:DistanceAlongLinearElement" />
      <xs:element name="pointAlongLinearElementExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="PointByCoordinates">
    <xs:annotation>
      <xs:documentation>A single point defined only by a coordinate set with an optional bearing direction.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="bearing" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>A bearing at the point measured in degrees (0 - 359). Unless otherwise specified the reference direction corresponding to 0 degrees is North.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="pointCoordinates" type="D2LogicalModel:PointCoordinates" />
      <xs:element name="pointByCoordinatesExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="PointCoordinates">
    <xs:annotation>
      <xs:documentation>A pair of coordinates defining the geodetic position of a single point using the European Terrestrial Reference System 1989 (ETRS89).</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="latitude" type="D2LogicalModel:Float" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Latitude in decimal degrees using the European Terrestrial Reference System 1989 (ETRS89).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="longitude" type="D2LogicalModel:Float" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Longitude in decimal degrees using the European Terrestrial Reference System 1989 (ETRS89).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="pointCoordinatesExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="PointExtended">
    <xs:annotation>
      <xs:documentation>Extension point for 'Point' to support the description of junctions (and other alternative point descriptions).</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="description" type="D2LogicalModel:MultilingualString" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Textual description for a point location</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="junction" type="D2LogicalModel:Junction" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="PositionAbsoluteEnum">
    <xs:annotation>
      <xs:documentation>Absolute positions of an item within an alloted space.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="onLeft">
        <xs:annotation>
          <xs:documentation>On the left of the allotted space.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="onRight">
        <xs:annotation>
          <xs:documentation>On the right of the allotted space.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="atTop">
        <xs:annotation>
          <xs:documentation>At the top of the allotted space.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="atBottom">
        <xs:annotation>
          <xs:documentation>At the bottom of the allotted space.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="PositionRelativeEnum">
    <xs:annotation>
      <xs:documentation>Relative positions of one item to another.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="above">
        <xs:annotation>
          <xs:documentation>Positioned above relative item.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="below">
        <xs:annotation>
          <xs:documentation>Positioned below relative item.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="toTheLeft">
        <xs:annotation>
          <xs:documentation>Positioned to the left of relative item.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="toTheRight">
        <xs:annotation>
          <xs:documentation>Positioned to the right of relative item.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="Referent">
    <xs:annotation>
      <xs:documentation>A referent on a linear object that has a known location such as a node, a reference marker (e.g. a markerpost), an intersection etc.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="referentIdentifier" type="D2LogicalModel:String" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The identifier of the referent, unique on the specified linear element (i.e. road or part of).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="referentName" type="D2LogicalModel:String" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The name of the referent, e.g. a junction or intersection name.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="referentType" type="D2LogicalModel:ReferentTypeEnum" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The type of the referent.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="referentDescription" type="D2LogicalModel:MultilingualString" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Description of the referent.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="pointCoordinates" type="D2LogicalModel:PointCoordinates" minOccurs="0" />
      <xs:element name="referentExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="ReferentTypeEnum">
    <xs:annotation>
      <xs:documentation>A set of types of known points along a linear object such as a road.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="boundary">
        <xs:annotation>
          <xs:documentation>A boundary between two jurisdictional or administrative areas. These may be legal boundaries such as between counties or countries, maintenance responsibility boundaries or control boundaries. </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="intersection">
        <xs:annotation>
          <xs:documentation>A crossing of two or more roads where the precise point of intersection is defined according to specific business rules.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="referenceMarker">
        <xs:annotation>
          <xs:documentation>A marker which is usually but not necessarily physical that is one of a sequence which are spaced out along the linear object (road)  to provide a location reference. The spacing of markers is not necessarily even.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="landmark">
        <xs:annotation>
          <xs:documentation>A visible identifiable physical landmark either alongside or close to the linear object.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="roadNode">
        <xs:annotation>
          <xs:documentation>A topological node defined on a road network. Such nodes may delineate the segmentation of the road network according to defined business rules or may constitute a purely topological representation of a road network.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="Road">
    <xs:annotation>
      <xs:documentation>Identification of a road by its name, identifier, type ...</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="nameOfRoad" type="D2LogicalModel:MultilingualString" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The name of the road.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="roadIdentifier" type="D2LogicalModel:MultilingualString" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Identifier/number of the road.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="typeOfRoad" type="D2LogicalModel:RoadTypeEnum" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Type of the road.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="roadDestination" type="D2LogicalModel:MultilingualString" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Name of some city, area, compass direction or other identification the road is leading to (to determine the direction in question).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="roadOrigination" type="D2LogicalModel:MultilingualString" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Name of some city, area, compass direction or other identification this road comes from.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="distanceToThisRoad" type="D2LogicalModel:MetresAsNonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Distance to the road in metres (from the calling component/object).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="roadExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="RoadNode">
    <xs:annotation>
      <xs:documentation>A road node as part of the specialised road identified by the name of a junctionon on this road.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:Road">
        <xs:sequence>
          <xs:element name="junctionName" type="D2LogicalModel:MultilingualString" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>Name of the junction.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="roadNodeExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="RoadTypeEnum">
    <xs:annotation>
      <xs:documentation>Categorisation of the  road type (motorway, main road, ...).</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="motorway">
        <xs:annotation>
          <xs:documentation>Motorway.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="trunkRoad">
        <xs:annotation>
          <xs:documentation>Trunk road.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="mainRoad">
        <xs:annotation>
          <xs:documentation>Main road.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="other">
        <xs:annotation>
          <xs:documentation>Other.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Seconds">
    <xs:annotation>
      <xs:documentation>Seconds.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="D2LogicalModel:Float" />
  </xs:simpleType>
  <xs:simpleType name="String">
    <xs:annotation>
      <xs:documentation>A character string whose value space is the set of finite-length sequences of characters. Every character has a corresponding Universal Character Set code point (as defined in ISO/IEC 10646), which is an integer.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:maxLength value="1024" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="SupplementaryPositionalDescription">
    <xs:annotation>
      <xs:documentation>A collection of supplementary positional information which improves the precision of the location.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="locationDescriptor" type="D2LogicalModel:LocationDescriptorEnum" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Specifies a descriptor which helps to identify the specific location.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="sequentialRampNumber" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The sequential number of an exit/entrance ramp from a given location in a given direction (normally used to indicate a specific exit/entrance in a complex junction/intersection).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="affectedCarriagewayAndLanes" type="D2LogicalModel:AffectedCarriagewayAndLanes" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="supplementaryPositionalDescriptionExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
    <xs:attribute name="locationPrecision" type="D2LogicalModel:MetresAsNonNegativeInteger" use="optional">
      <xs:annotation>
        <xs:documentation>Indicates that the location is given with a precision which is better than the stated value in metres.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="TpegDescriptor" abstract="true">
    <xs:annotation>
      <xs:documentation>A collection of information providing descriptive references to locations using the TPEG-Loc location referencing approach.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="descriptor" type="D2LogicalModel:MultilingualString" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>A text string which describes or elaborates the location.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="tpegDescriptorExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="TpegFramedPoint">
    <xs:annotation>
      <xs:documentation>A point on the road network which is framed between two other points on the same road.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:TpegPointLocation">
        <xs:sequence>
          <xs:element name="tpegFramedPointLocationType" type="D2LogicalModel:TpegLoc01FramedPointLocationSubtypeEnum" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>The type of TPEG location.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="framedPoint" type="D2LogicalModel:TpegNonJunctionPoint">
            <xs:annotation>
              <xs:documentation>A single non junction point on the road network which is framed between two other specified points on the road network.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="to" type="D2LogicalModel:TpegPoint">
            <xs:annotation>
              <xs:documentation>The location at the down stream end of the section of road which frames the TPEGFramedPoint.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="from" type="D2LogicalModel:TpegPoint">
            <xs:annotation>
              <xs:documentation>The location at the up stream end of the section of road which frames the TPEGFramedPoint.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="tpegFramedPointExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TpegIlcPointDescriptor">
    <xs:annotation>
      <xs:documentation>A descriptor for describing a junction by defining the intersecting roads.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:TpegPointDescriptor">
        <xs:sequence>
          <xs:element name="tpegIlcPointDescriptorType" type="D2LogicalModel:TpegLoc03IlcPointDescriptorSubtypeEnum" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>The nature of the descriptor used to define the location under consideration (derived from the TPEG Loc table 03).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="tpegIlcPointDescriptorExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TpegJunction">
    <xs:annotation>
      <xs:documentation>A point on the road network which is a road junction point.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:TpegPoint">
        <xs:sequence>
          <xs:element name="pointCoordinates" type="D2LogicalModel:PointCoordinates" />
          <xs:element name="name" type="D2LogicalModel:TpegJunctionPointDescriptor" minOccurs="0">
            <xs:annotation>
              <xs:documentation>A name which identifies a junction point on the road network</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ilc" type="D2LogicalModel:TpegIlcPointDescriptor" maxOccurs="3">
            <xs:annotation>
              <xs:documentation>A descriptor for describing a junction by identifying the intersecting roads at a road junction.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="otherName" type="D2LogicalModel:TpegOtherPointDescriptor" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>A descriptive name which helps to identify the junction point.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="tpegJunctionExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TpegJunctionPointDescriptor">
    <xs:annotation>
      <xs:documentation>A descriptor for describing a point at a junction on a road network.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:TpegPointDescriptor">
        <xs:sequence>
          <xs:element name="tpegJunctionPointDescriptorType" type="D2LogicalModel:TpegLoc03JunctionPointDescriptorSubtypeEnum" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>The nature of the descriptor used to define the location under consideration (derived from the TPEG Loc table 03).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="tpegJunctionPointDescriptorExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TpegLinearLocation">
    <xs:annotation>
      <xs:documentation>A linear section along a single road defined between two points on the same road by a TPEG-Loc structure.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="tpegDirection" type="D2LogicalModel:DirectionEnum" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The direction of traffic flow.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="tpegLinearLocationType" type="D2LogicalModel:TpegLoc01LinearLocationSubtypeEnum" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The type of TPEG location.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="to" type="D2LogicalModel:TpegPoint">
        <xs:annotation>
          <xs:documentation>The location at the down stream end of the linear section of road.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="from" type="D2LogicalModel:TpegPoint">
        <xs:annotation>
          <xs:documentation>The location at the up stream end of the linear section of road.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="tpegLinearLocationExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="TpegLoc01FramedPointLocationSubtypeEnum">
    <xs:annotation>
      <xs:documentation>Types of points on the road network framed by two other points on the same road.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="framedPoint">
        <xs:annotation>
          <xs:documentation>A point on the road network framed by two other points on the same road.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="TpegLoc01LinearLocationSubtypeEnum">
    <xs:annotation>
      <xs:documentation>Types of linear location.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="segment">
        <xs:annotation>
          <xs:documentation>A segment (or link) of the road network corresponding to the way in which the road operator has segmented the network.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="TpegLoc01SimplePointLocationSubtypeEnum">
    <xs:annotation>
      <xs:documentation>Types of simple point.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="intersection">
        <xs:annotation>
          <xs:documentation>An point on the road network at which one or more roads intersect.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="nonLinkedPoint">
        <xs:annotation>
          <xs:documentation>A point on the road network which is not at a junction or intersection.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="TpegLoc03IlcPointDescriptorSubtypeEnum">
    <xs:annotation>
      <xs:documentation>Descriptors for describing a junction by identifying the intersecting roads at a road junction.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="tpegIlcName1">
        <xs:annotation>
          <xs:documentation>The name of the road on which the junction point is located.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="tpegIlcName2">
        <xs:annotation>
          <xs:documentation>The name of the first intersecting road at the junction.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="tpegIlcName3">
        <xs:annotation>
          <xs:documentation>The name of the second intersecting road (if one exists) at the junction.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="TpegLoc03JunctionPointDescriptorSubtypeEnum">
    <xs:annotation>
      <xs:documentation>Descriptors for describing a point at a road junction.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="junctionName">
        <xs:annotation>
          <xs:documentation>Name of a road network junction where two or more roads join.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="TpegLoc03OtherPointDescriptorSubtypeEnum">
    <xs:annotation>
      <xs:documentation>Descriptors other than junction names and road descriptors which can help to identify the location of points on the road network.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="administrativeAreaName">
        <xs:annotation>
          <xs:documentation>Name of an administrative area.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="administrativeReferenceName">
        <xs:annotation>
          <xs:documentation>Reference name by which an administrative area is known.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="airportName">
        <xs:annotation>
          <xs:documentation>Name of an airport.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="areaName">
        <xs:annotation>
          <xs:documentation>Name of an area.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="buildingName">
        <xs:annotation>
          <xs:documentation>Name of a building.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="busStopIdentifier">
        <xs:annotation>
          <xs:documentation>Identifier of a bus stop on the road network.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="busStopName">
        <xs:annotation>
          <xs:documentation>Name of a bus stop on the road network.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="canalName">
        <xs:annotation>
          <xs:documentation>Name of a canal.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="countyName">
        <xs:annotation>
          <xs:documentation>Name of a county (administrative sub-division).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ferryPortName">
        <xs:annotation>
          <xs:documentation>Name of a ferry port.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="intersectionName">
        <xs:annotation>
          <xs:documentation>Name of a road network intersection.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="lakeName">
        <xs:annotation>
          <xs:documentation>Name of a lake.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="linkName">
        <xs:annotation>
          <xs:documentation>Name of a road link.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="localLinkName">
        <xs:annotation>
          <xs:documentation>Local name of a road link.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="metroStationName">
        <xs:annotation>
          <xs:documentation>Name of a metro/underground station.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="nationName">
        <xs:annotation>
          <xs:documentation>Name of a nation (e.g. Wales) which is a sub-division of a ISO recognised country.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="nonLinkedPointName">
        <xs:annotation>
          <xs:documentation>Name of a point on the road network which is not at a junction or intersection. </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="parkingFacilityName">
        <xs:annotation>
          <xs:documentation>Name of a parking facility.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="pointName">
        <xs:annotation>
          <xs:documentation>Name of a specific point.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="pointOfInterestName">
        <xs:annotation>
          <xs:documentation>Name of a general point of interest.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="railwayStation">
        <xs:annotation>
          <xs:documentation>Name of a railway station.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="regionName">
        <xs:annotation>
          <xs:documentation>Name of a geographic region.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="riverName">
        <xs:annotation>
          <xs:documentation>Name of a river.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="seaName">
        <xs:annotation>
          <xs:documentation>Name of a sea.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="serviceAreaName">
        <xs:annotation>
          <xs:documentation>Name of a service area on a road network.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="tidalRiverName">
        <xs:annotation>
          <xs:documentation>Name of a river which is of a tidal nature.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="townName">
        <xs:annotation>
          <xs:documentation>Name of a town.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="other">
        <xs:annotation>
          <xs:documentation>Other than as defined in this enumeration.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="TpegNonJunctionPoint">
    <xs:annotation>
      <xs:documentation>A point on the road network which is not a road junction point.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:TpegPoint">
        <xs:sequence>
          <xs:element name="pointCoordinates" type="D2LogicalModel:PointCoordinates" />
          <xs:element name="name" type="D2LogicalModel:TpegOtherPointDescriptor" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>A descriptive name which helps to identify the non junction point. At least one descriptor must identify the road on which the point is located, i.e. must be of type 'linkName' or 'localLinkName'.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="tpegNonJunctionPointExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TpegOtherPointDescriptor">
    <xs:annotation>
      <xs:documentation>General descriptor for describing a point.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:TpegPointDescriptor">
        <xs:sequence>
          <xs:element name="tpegOtherPointDescriptorType" type="D2LogicalModel:TpegLoc03OtherPointDescriptorSubtypeEnum" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>The nature of the descriptor used to define the location under consideration (derived from the TPEG Loc table 03).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="tpegOtherPointDescriptorExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TpegPoint" abstract="true">
    <xs:annotation>
      <xs:documentation>A point on the road network which is either a junction point or a non junction point.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="tpegPointExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="TpegPointDescriptor" abstract="true">
    <xs:annotation>
      <xs:documentation>A descriptor for describing a point location.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:TpegDescriptor">
        <xs:sequence>
          <xs:element name="tpegPointDescriptorExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TpegPointLocation" abstract="true">
    <xs:annotation>
      <xs:documentation>A single point on the road network defined by a TPEG-Loc structure and which has an associated direction of traffic flow.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="tpegDirection" type="D2LogicalModel:DirectionEnum" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The direction of traffic flow.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="tpegPointLocationExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="TpegSimplePoint">
    <xs:annotation>
      <xs:documentation>A point on the road network which is not bounded by any other points on the road network.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:TpegPointLocation">
        <xs:sequence>
          <xs:element name="tpegSimplePointLocationType" type="D2LogicalModel:TpegLoc01SimplePointLocationSubtypeEnum" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>The type of TPEG location.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="point" type="D2LogicalModel:TpegPoint">
            <xs:annotation>
              <xs:documentation>A single point defined by a coordinate set and TPEG decriptors.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="tpegSimplePointExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="TrafficStatusEnum">
    <xs:annotation>
      <xs:documentation>List of terms used to describe traffic conditions.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="impossible">
        <xs:annotation>
          <xs:documentation>Traffic in the specified direction is completely congested, effectively at a standstill, making driving impossible.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="congested">
        <xs:annotation>
          <xs:documentation>Traffic in the specified direction is congested making driving very slow and difficult.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="heavy">
        <xs:annotation>
          <xs:documentation>Traffic in the specified direction is heavier than usual making driving conditions more difficult than normal.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="freeFlow">
        <xs:annotation>
          <xs:documentation>Traffic in the specified direction is free flowing.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="unknown">
        <xs:annotation>
          <xs:documentation>Traffic conditions are unknown.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="TrafficStatusValue">
    <xs:annotation>
      <xs:documentation>A measured or calculated value of the status of traffic conditions on a section of road in a specified direction.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:DataValue">
        <xs:sequence>
          <xs:element name="trafficStatusValue" type="D2LogicalModel:TrafficStatusEnum" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>A status value of traffic conditions on the identified section of road in the specified direction.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="trafficStatusValueExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="UrgencyEnum">
    <xs:annotation>
      <xs:documentation>Degrees of urgency that a receiving client should associate with the disseminate of the information contained in the publication.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="extremelyUrgent">
        <xs:annotation>
          <xs:documentation>Dissemination of the information is extremely urgent.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="urgent">
        <xs:annotation>
          <xs:documentation>Dissemination of the information is urgent.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="normalUrgency">
        <xs:annotation>
          <xs:documentation>Dissemination of the information is of normal urgency.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Url">
    <xs:annotation>
      <xs:documentation>A Uniform Resource Locator (URL) address comprising a compact string of characters for a resource available on the Internet.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:anyURI" />
  </xs:simpleType>
  <xs:complexType name="UrlLink">
    <xs:annotation>
      <xs:documentation>Details of a Uniform Resource Locator (URL) address pointing to a resource available on the Internet from where further relevant information may be obtained.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="urlLinkAddress" type="D2LogicalModel:Url" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>A Uniform Resource Locator (URL) address pointing to a resource available on the Internet from where further relevant information may be obtained.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="urlLinkDescription" type="D2LogicalModel:MultilingualString" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Description of the relevant information available on the Internet from the URL link.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="urlLinkType" type="D2LogicalModel:UrlLinkTypeEnum" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Details of the type of relevant information available on the Internet from the URL link.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="urlLinkExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="UrlLinkTypeEnum">
    <xs:annotation>
      <xs:documentation>Types of URL links.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="documentPdf">
        <xs:annotation>
          <xs:documentation>URL link to a pdf document.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="html">
        <xs:annotation>
          <xs:documentation>URL link to an html page.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="image">
        <xs:annotation>
          <xs:documentation>URL link to an image.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="rss">
        <xs:annotation>
          <xs:documentation>URL link to an RSS feed.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="videoStream">
        <xs:annotation>
          <xs:documentation>URL link to a video stream.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="voiceStream">
        <xs:annotation>
          <xs:documentation>URL link to a voice stream.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="other">
        <xs:annotation>
          <xs:documentation>Other than as defined in this enumeration.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="VehicleCountValue">
    <xs:annotation>
      <xs:documentation>A measured or calculated value of absolute count of vehicles within a specified period of time expressed as non negative integer.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:DataValue">
        <xs:sequence>
          <xs:element name="vehicleCount" type="D2LogicalModel:NonNegativeInteger" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>A measured or calculated absolute count of vehicles within a specified period of time expressed as non negative integer.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="vehicleCountValueExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="VehicleFlowValue">
    <xs:annotation>
      <xs:documentation>A measured or calculated value of the flow rate of vehicles.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:DataValue">
        <xs:sequence>
          <xs:element name="vehicleFlowRate" type="D2LogicalModel:VehiclesPerHour" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>A value of vehicle flow rate expressed in vehicles per hour.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="vehicleFlowValueExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="VehiclesPerHour">
    <xs:annotation>
      <xs:documentation>Vehicles per hour.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="D2LogicalModel:NonNegativeInteger" />
  </xs:simpleType>
  <xs:complexType name="VmsManagedLogicalLocation">
    <xs:annotation>
      <xs:documentation>The logical location (e.g. a car park, a section of road, a junction etc.) which a VMS contributes to the management of.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="managedLogicalLocation" type="D2LogicalModel:MultilingualString" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Identification of the logical location (e.g. a car park, a section of road , a junction etc.) which this sign contributes to the management of.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="distanceFromLogicalLocation" type="D2LogicalModel:MetresAsNonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Distance in metres of the VMS from the logical location which this sign contributes to the management of.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="managedLocation" type="D2LogicalModel:Location" minOccurs="0">
        <xs:annotation>
          <xs:documentation>The location which is managed by the variable message sign, such as the location of a junction or a car park.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="vmsManagedLogicalLocationExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="VmsPictogramDisplayCharacteristics">
    <xs:annotation>
      <xs:documentation>Characteristics specific to the pictogram display area(s) on the VMS where pictogramDisplayAreaIndex indicates which pictogram area it relates to.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="pictogramLanternsPresent" type="D2LogicalModel:Boolean" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Indicates whether the VMS is equipped with flashing lanterns associated with the pictogram display area.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="pictogramSequencingCapable" type="D2LogicalModel:Boolean" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Indicates whether the pictogram display area on the VMS is capable of sequencing through multiple pictograms. True = capable.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="pictogramPixelsAcross" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Number of pixels horizontally across the pictogram display area of the VMS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="pictogramPixelsDown" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Number of pixels vertically down the pictogram display area of the VMS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="pictogramDisplayHeight" type="D2LogicalModel:MetresAsFloat" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The vertical height measured in metres of the specific pictogram display area.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="pictogramDisplayWidth" type="D2LogicalModel:MetresAsFloat" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The horizontal width measured in metres of the specific pictogram display area.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="pictogramCodeListIdentifier" type="D2LogicalModel:String" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Indicates which pictogram code list is referenced.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="maxPictogramLuminanceLevel" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Maximum integer luminance level that is available on the pictogram display area of the VMS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="pictogramNumberOfColours" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The number of colours the pictogram display area is capable of rendering.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="maxNumberOfSequentialPictograms" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The maximum number of pictograms that can be sequenced through on the pictogram display area.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="pictogramPositionAbsolute" type="D2LogicalModel:PositionAbsoluteEnum" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The position of the area in which the pictogram is displayed, i.e. at the left, right, top or bottom of the VMS display.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="pictogramPositionX" type="D2LogicalModel:MetresAsFloat" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The X-coordinate (horizontal) position of the area in which the pictogram is displayed measured from the bottom left of the sign's overall display area to the bottom left of the specific pictogram display area.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="pictogramPositionY" type="D2LogicalModel:MetresAsFloat" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The Y-coordinate (vertical) position of the area in which the pictogram is displayed measured from the bottom left of the sign's overall display area to the bottom left of the specific pictogram display area.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="pictogramPositionRelativeToText" type="D2LogicalModel:PositionRelativeEnum" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The position of the area in which the pictogram is displayed relative to the textual area of the VMS (e.g. to the left, to the right ....).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="vmsSupplementaryPanelCharacteristics" type="D2LogicalModel:VmsSupplementaryPanelCharacteristics" minOccurs="0" />
      <xs:element name="vmsPictogramDisplayCharacteristicsExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="VmsRecord">
    <xs:annotation>
      <xs:documentation>A sub-record in the VMS Unit table defining the characteristics of a single variable message sign that is controlled by a specific VMS unit. Locations are on or adjacent to the road network but may be updated over time if relating to a mobile VMS unit.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="vmsDescription" type="D2LogicalModel:MultilingualString" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The description of the VMS (possibly giving a description of its location or its normal use).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="vmsOwner" type="D2LogicalModel:MultilingualString" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Owner (authority or organisation) of the VMS. This may not necessarily be the same as the authority or organisation which is currently controlling the VMS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="vmsPhysicalMounting" type="D2LogicalModel:PhysicalMountingEnum" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Description of how the VMS is physically mounted or deployed on the road.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="vmsType" type="D2LogicalModel:VmsTypeEnum" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Broad classification of the type of variable message sign.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="vmsTypeCode" type="D2LogicalModel:String" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Specification of the type of VMS defined by a code, normally country or even manufacturer specific (e.g. MS4).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="numberOfPictogramDisplayAreas" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Number of pictogram display areas which the VMS contains.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="dynamicallyConfigurableDisplayAreas" type="D2LogicalModel:Boolean" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Identifies (when True) that the VMS has a display area that may be dynamically configured to display different combinations of text and pictogram areas. The current configuration will normally be given with each published current VMS setting.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="vmsDisplayHeight" type="D2LogicalModel:MetresAsFloat" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Height in metres of the sign's overall display area.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="vmsDisplayWidth" type="D2LogicalModel:MetresAsFloat" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Width in metres of the sign's overall display area.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="vmsHeightAboveRoadway" type="D2LogicalModel:MetresAsFloat" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Height in metres of the mounted sign above the roadway, measured to the bottom of the display area.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="vmsTextDisplayCharacteristics" type="D2LogicalModel:VmsTextDisplayCharacteristics" minOccurs="0" />
      <xs:element name="vmsPictogramDisplayCharacteristics" type="D2LogicalModel:_VmsRecordPictogramDisplayAreaIndexVmsPictogramDisplayCharacteristics" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="vmsLocation" type="D2LogicalModel:Location" minOccurs="0">
        <xs:annotation>
          <xs:documentation>The point location of the variable message sign. For mobile VMS which are regularly moved this need not be provided. Instead the VMS location should be provided in the VmsPublication along with current settings.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="vmsManagedLogicalLocation" type="D2LogicalModel:VmsManagedLogicalLocation" minOccurs="0" />
      <xs:element name="backgroundImageUrl" type="D2LogicalModel:UrlLink" minOccurs="0">
        <xs:annotation>
          <xs:documentation>A URL reference from where an image of the "painted" static background on the VMS can be obtained.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="vmsRecordExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="VmsSupplementaryPanelCharacteristics">
    <xs:annotation>
      <xs:documentation>Characteristics of a panel which may display details (sometimes regulatory in nature) that are supplemental to the main pictogram, comprising an additional line of text and/or a pictogram.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="supplementaryPictogramCodeListIdentifier" type="D2LogicalModel:String" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Indicates which supplementary pictogram code list is referenced.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="supplementaryPanelPixelsAcross" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Number of pixels horizontally across the supplementary panel display area.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="supplementaryPanelPixelsDown" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Number of pixels vertically down the supplementary panel display area.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="supplementaryPanelDisplayHeight" type="D2LogicalModel:MetresAsFloat" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The vertical height measured in metres of the supplementary panel display area.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="supplementaryPanelDisplayWidth" type="D2LogicalModel:MetresAsFloat" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The horizontal width measured in metres of the supplementary panel display area.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="supplementaryPanelPositionX" type="D2LogicalModel:MetresAsFloat" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The X-coordinate (horizontal) position of the supplementary panel measured from the bottom left of the sign's overall display area to the bottom left of the supplementary panel.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="supplementaryPanelPositionY" type="D2LogicalModel:MetresAsFloat" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The Y-coordinate (vertical) position of the supplementary panel measured from the bottom left of the sign's overall display area to the bottom left of the supplementary panel.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="relativePositionToPictogramArea" type="D2LogicalModel:PositionRelativeEnum" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The position of the panel in which the supplementary details are displayed relative to the position of the pictogram display area which it is used to qualify (e.g. below).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="vmsSupplementaryPanelCharacteristicsExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="VmsTablePublication">
    <xs:annotation>
      <xs:documentation>A publication containing one or more VMS Unit Tables each comprising a set of records which hold details of VMS units.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="D2LogicalModel:PayloadPublication">
        <xs:sequence>
          <xs:element name="headerInformation" type="D2LogicalModel:HeaderInformation" />
          <xs:element name="vmsUnitTable" type="D2LogicalModel:VmsUnitTable" maxOccurs="unbounded" />
          <xs:element name="vmsTablePublicationExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="VmsTextDisplayCharacteristics">
    <xs:annotation>
      <xs:documentation>Characteristics specific to the textual display area on the VMS.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="textLanternsPresent" type="D2LogicalModel:Boolean" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Indicates whether the VMS is equipped with flashing lanterns associated with the textual display area.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="textPageSequencingCapable" type="D2LogicalModel:Boolean" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Indicates whether the text display on the VMS is capable of sequencing through multiple pages of text. True = capable.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="textPixelsAcross" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Number of pixels horizontally across the textual display area of the VMS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="textPixelsDown" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Number of pixels vertically down the textual display area of the VMS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="textDisplayHeight" type="D2LogicalModel:MetresAsFloat" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The vertical height measured in metres of the specific text display area.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="textDisplayWidth" type="D2LogicalModel:MetresAsFloat" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The horizontal width measured in metres of the specific text display area.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="maxNumberOfCharacters" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Maximum number of displayable characters on a single line in the textual display area of the VMS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="maxNumberOfRows" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Maximum number of rows of displayable characters in the textual display area of the VMS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="legendCodeListIdentifier" type="D2LogicalModel:String" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Indicates which legend/text code list is referenced. This may be specific to the VMS type defined by vmsTypeCode.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="maxFontHeight" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Maximum font height in pixels.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="minFontHeight" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Minimum font height in pixels.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="maxFontWidth" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Maximum font width in pixels.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="minFontWidth" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Minimum font width in pixels.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="maxFontSpacing" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Maximum font spacing in pixels.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="minFontSpacing" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Minimum font spacing in pixels.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="maxTextLuminanceLevel" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Maximum integer luminance level that is available on the textual display area of the VMS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="maxNumberOfSequentialPages" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Maximum number of text pages which the VMS is capable of scrolling through sequentially, (2 to n).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="textPositionAbsolute" type="D2LogicalModel:PositionAbsoluteEnum" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The position of the area in which the text is displayed, e.g. at the left, right, top or bottom of the VMS display.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="textPositionX" type="D2LogicalModel:MetresAsFloat" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The X-coordinate (horizontal) position of the area in which the text is displayed measured from the bottom left of the sign's overall display area to the bottom left of the specific text display area.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="textPositionY" type="D2LogicalModel:MetresAsFloat" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The Y-coordinate (vertical) position of the area in which the text is displayed measured from the bottom left of the sign's overall display area to the bottom left of the specific text display area.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="vmsTextDisplayCharacteristicsExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="VmsTypeEnum">
    <xs:annotation>
      <xs:documentation>Type of variable message sign.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="colourGraphic">
        <xs:annotation>
          <xs:documentation>A colour graphic display.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="continuousSign">
        <xs:annotation>
          <xs:documentation>A sign implementing fixed messages which are selected by electromechanical means.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="monochromeGraphic">
        <xs:annotation>
          <xs:documentation>A monochrome graphic display.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="matrixSign">
        <xs:annotation>
          <xs:documentation>Simple display made up of a fixed matrix of pixels (e.g. sets of LEDs or lights) capable of showing a limited set of aspects (or matrix images). The display area is regarded as a pictogram area in DATEX II. </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="other">
        <xs:annotation>
          <xs:documentation>Other than as defined in this enumeration.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="VmsUnitRecord">
    <xs:annotation>
      <xs:documentation>A versioned single VMS unit entry/record in the VMS Unit table that defines the characteristics of the VMS unit.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="numberOfVms" type="D2LogicalModel:NonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Number of variable message signs contolled by the unit.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="vmsUnitIdentifier" type="D2LogicalModel:String" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Identification of a VMS unit used by the supplier or consumer systems.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="vmsUnitIPAddress" type="D2LogicalModel:String" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>IP network address of the VMS unit.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="vmsUnitElectronicAddress" type="D2LogicalModel:String" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Electronic address of the VMS unit (if not IP addressable).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="vmsRecord" type="D2LogicalModel:_VmsUnitRecordVmsIndexVmsRecord" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="vmsUnitRecordExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
    <xs:attribute name="id" type="xs:string" use="required" />
    <xs:attribute name="version" type="xs:string" use="required" />
  </xs:complexType>
  <xs:complexType name="VmsUnitTable">
    <xs:annotation>
      <xs:documentation>A versioned VMS Unit Table comprising a number of data records, each record defining the characteristics of a specific deployed variable message sign unit.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="vmsUnitTableIdentification" type="D2LogicalModel:String" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>An alphanumeric identification for the VMS Unit table, possibly human readable. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="vmsUnitRecord" type="D2LogicalModel:VmsUnitRecord" maxOccurs="unbounded" />
      <xs:element name="vmsUnitTableExtension" type="D2LogicalModel:_ExtensionType" minOccurs="0" />
    </xs:sequence>
    <xs:attribute name="id" type="xs:string" use="required" />
    <xs:attribute name="version" type="xs:string" use="required" />
  </xs:complexType>
</xs:schema>