Location references in Datex II use the following schema. The schema is an extract of the complete Datex II schema showing only the OpenLR relevant parts.
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<xs:schema elementFormDefault="qualified"
attributeFormDefault="unqualified" xmlns:D2LogicalModel="http://datex2.eu/schema/2_0RC2/2_0"
targetNamespace="http://datex2.eu/schema/2_0RC2/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:simpleType name="AngleInDegreesRestrictedRange">
<xs:restriction base="D2LogicalModel:NonNegativeInteger">
<xs:minInclusive value="0" />
<xs:maxInclusive value="359" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Float">
<xs:restriction base="xs:float" />
</xs:simpleType>
<xs:simpleType name="MetresAsNonNegativeInteger">
<xs:restriction base="D2LogicalModel:NonNegativeInteger" />
</xs:simpleType>
<xs:simpleType name="NonNegativeInteger">
<xs:restriction base="xs:nonNegativeInteger" />
</xs:simpleType>
<xs:complexType name="OpenlrBaseLocationReferencePoint"
abstract="true">
<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:sequence>
<xs:element name="openlrSideOfRoad" type="D2LogicalModel:OpenlrSideOfRoadEnum"
minOccurs="1" maxOccurs="1" />
<xs:element name="openlrOrientation" type="D2LogicalModel:OpenlrOrientationEnum"
minOccurs="1" maxOccurs="1" />
<xs:element name="openlrPositiveOffset"
type="D2LogicalModel:MetresAsNonNegativeInteger" minOccurs="0"
maxOccurs="1" />
<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:sequence>
<xs:element name="openlrLineLocationReference"
type="D2LogicalModel:OpenlrLineLocationReference" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="OpenlrExtendedPoint">
<xs:sequence>
<xs:element name="openlrPointLocationReference"
type="D2LogicalModel:OpenlrPointLocationReference" />
</xs:sequence>
</xs:complexType>
<xs:simpleType name="OpenlrFormOfWayEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="undefined" />
<xs:enumeration value="motorway" />
<xs:enumeration value="multipleCarriageway" />
<xs:enumeration value="singleCarriageway" />
<xs:enumeration value="roundabout" />
<xs:enumeration value="slipRoad" />
<xs:enumeration value="trafficSquare" />
<xs:enumeration value="other" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="OpenlrFunctionalRoadClassEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="FRC0" />
<xs:enumeration value="FRC1" />
<xs:enumeration value="FRC2" />
<xs:enumeration value="FRC3" />
<xs:enumeration value="FRC4" />
<xs:enumeration value="FRC5" />
<xs:enumeration value="FRC6" />
<xs:enumeration value="FRC7" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="OpenlrGeoCoordinate">
<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: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:sequence>
<xs:element name="openlrFunctionalRoadClass"
type="D2LogicalModel:OpenlrFunctionalRoadClassEnum" minOccurs="1"
maxOccurs="1" />
<xs:element name="openlrFormOfWay" type="D2LogicalModel:OpenlrFormOfWayEnum"
minOccurs="1" maxOccurs="1" />
<xs:element name="openlrBearing"
type="D2LogicalModel:AngleInDegreesRestrictedRange" minOccurs="1"
maxOccurs="1" />
<xs:element name="openlrLineAttributesExtension" type="D2LogicalModel:_ExtensionType"
minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="OpenlrLineLocationReference">
<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: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:sequence>
<xs:element name="openlrPositiveOffset"
type="D2LogicalModel:MetresAsNonNegativeInteger" minOccurs="0"
maxOccurs="1" />
<xs:element name="openlrNegativeOffset"
type="D2LogicalModel:MetresAsNonNegativeInteger" minOccurs="0"
maxOccurs="1" />
<xs:element name="openlrOffsetsExtension" type="D2LogicalModel:_ExtensionType"
minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:simpleType name="OpenlrOrientationEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="noOrientationOrUnknown" />
<xs:enumeration value="withLineDirection" />
<xs:enumeration value="againstLineDirection" />
<xs:enumeration value="both" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="OpenlrPathAttributes">
<xs:sequence>
<xs:element name="openlrLowestFRCToNextLRPoint"
type="D2LogicalModel:OpenlrFunctionalRoadClassEnum" minOccurs="1"
maxOccurs="1" />
<xs:element name="openlrDistanceToNextLRPoint" type="D2LogicalModel:NonNegativeInteger"
minOccurs="1" maxOccurs="1" />
<xs:element name="openlrPathAttributesExtension" type="D2LogicalModel:_ExtensionType"
minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="OpenlrPointAlongLine">
<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: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:complexContent>
<xs:extension base="D2LogicalModel:OpenlrBasePointLocation">
<xs:sequence>
<xs:element name="openlrCoordinate" type="D2LogicalModel:PointCoordinates" />
<xs:element name="openlrPoiWithAccessPointExtension"
type="D2LogicalModel:_ExtensionType" minOccurs="0" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:simpleType name="OpenlrSideOfRoadEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="onRoadOrUnknown" />
<xs:enumeration value="right" />
<xs:enumeration value="left" />
<xs:enumeration value="both" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="PointCoordinates">
<xs:sequence>
<xs:element name="latitude" type="D2LogicalModel:Float"
minOccurs="1" maxOccurs="1" />
<xs:element name="longitude" type="D2LogicalModel:Float"
minOccurs="1" maxOccurs="1" />
<xs:element name="pointCoordinatesExtension" type="D2LogicalModel:_ExtensionType"
minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:schema>