次に、ルート・レスポンスのXMLスキーマ定義を示します。
<!-- XML Schema definition for Route Response from the routing engine --> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" elementFormDefault="qualified"> <xsd:simpleType name="nonNegativeDecimal"> <xsd:restriction base="xsd:decimal"> <xsd:minInclusive value="0"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="positiveDecimal"> <xsd:restriction base="xsd:decimal"> <xsd:minExclusive value="0"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="distanceUnit"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="mile"/> <xsd:enumeration value="km"/> <xsd:enumeration value="kilometer"/> <xsd:enumeration value="meter"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="timeUnit"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="minute"/> <xsd:enumeration value="hour"/> <xsd:enumeration value="second"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="edgeIdElement"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[-0-9,]+"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="edgeIdList"> <xsd:list itemType="edgeIdElement"/> </xsd:simpleType> <xsd:simpleType name="emptyString"> <xsd:restriction base="string"> <xsd:maxLength value="0"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="latitude"> <xsd:restriction base="decimal"> <xsd:minInclusive value="-90.0" /> <xsd:maxInclusive value="90.0" /> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="longitude"> <xsd:restriction base="decimal"> <xsd:minInclusive value="-180.0"/> <xsd:maxInclusive value="180.0"/> </xsd:restriction> </xsd:simpleType> <xsd:complexType name="geometry"> <xsd:sequence> <xsd:element ref="gml:LineString"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="outputLocation"> <xsd:attribute name="id" type="xsd:positiveInteger" use="required"/> <xsd:attribute name="longitude" use="required"> <xsd:simpleType> <xsd:union memberTypes="longitude emptyString" /> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="latitude" use="required"> <xsd:simpleType> <xsd:union memberTypes="latitude emptyString" /> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="house_number" type="xsd:string" use="required"/> <xsd:attribute name="street" type="xsd:string" use="required"/> <xsd:attribute name="city" type="xsd:string" use="required"/> <xsd:attribute name="state" type="xsd:string" use="required"/> <xsd:attribute name="country" type="xsd:string" use="required"/> <xsd:attribute name="driving_side" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="L"/> <xsd:enumeration value="N"/> <xsd:enumeration value="R"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="postal_code" type="xsd:string" use="required"/> <xsd:attribute name="edge_id" type="xsd:long" use="required"/> <xsd:attribute name="percent" type="edgePercentage" use="required"/> </xsd:complexType> <xsd:complexType name="segmentType"> <xsd:sequence> <xsd:element name="segment_geometry" type="geometry" minOccurs="0" maxOccurs="1"/> <xsd:element name="segment_edge_ids" type="edgeIdList" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="sequence" type="xsd:positiveInteger" use="required"/> <xsd:attribute name="instruction" type="xsd:string" use="required"/> <xsd:attribute name="distance" type="nonNegativeDecimal" use="required"/> <xsd:attribute name="time" type="nonNegativeDecimal" use="required"/> </xsd:complexType> <xsd:element name="route_response"> <xsd:complexType> <xsd:sequence> <xsd:element name="route" minOccurs="1" maxOccurs="1"> <xsd:simpleType> <xsd:union memberTypes="multiRouteType routeType"/> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="multiRouteType"> <xsd:sequence> <xsd:element name="route_geometry" type="geometry" minOccurs="0" maxOccurs="1"/> <xsd:element name="route_edge_ids" type="edgeIdList" minOccurs="0" maxOccurs="1"/> <xsd:element name="start_location" type="outputLocation" minOccurs="0" maxOccurs="1"/> <xsd:element name="end_location" type="outputLocation" minOccurs="0" maxOccurs="1"/> <xsd:element name="subroute" minOccurs="1" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element name="subroute_geometry" type="geometry" minOccurs="0" maxOccurs="1"/> <xsd:element name="subroute_edge_ids" type="edgeIdList" minOccurs="0" maxOccurs="1"/> <xsd:element name="start_location" type="outputLocation" minOccurs="0" maxOccurs="1"/> <xsd:element name="segment" type="segmentType" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="end_location" type="outputLocation" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="id" type="xsd:nonNegativeInteger" use="required"/> <xsd:attribute name="step_count" type="xsd:nonNegativeInteger" use="required"/> <xsd:attribute name="distance" type="nonNegativeDecimal" use="required"/> <xsd:attribute name="distance_unit" type="distanceUnit" use="required"/> <xsd:attribute name="time" type="nonNegativeDecimal" use="required"/> <xsd:attribute name="time_unit" type="timeUnit" use="required"/> <xsd:attribute name="start_location" type="xsd:positiveInteger" use="required"/> <xsd:attribute name="end_location" type="xsd:positiveInteger" use="required"/> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="routeType"> <xsd:sequence> <xsd:element name="route_geometry" type="geometry" minOccurs="0" maxOccurs="1"/> <xsd:element name="route_edge_ids" type="edgeIdList" minOccurs="0" maxOccurs="1"/> <xsd:element name="start_location" type="outputLocation" minOccurs="0" maxOccurs="1"/> <xsd:element name="segment" type="segmentType" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="end_location" type="outputLocation" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="id" type="xsd:nonNegativeInteger" use="required"/> <xsd:attribute name="step_count" type="xsd:nonNegativeInteger" use="required"/> <xsd:attribute name="distance" type="nonNegativeDecimal" use="required"/> <xsd:attribute name="distance_unit" type="distanceUnit" use="required"/> <xsd:attribute name="time" type="nonNegativeDecimal" use="required"/> <xsd:attribute name="time_unit" type="timeUnit" use="required"/> <xsd:attribute name="start_location" type="xsd:positiveInteger" use="required"/> <xsd:attribute name="end_location" type="xsd:positiveInteger" use="required"/> </xsd:complexType> </xsd:schema>