Skip to main content

Hi Long time user, havent posted as not been hands on in a long time but here goes


We are looking to add new extensions into GPX files 
Something like:
 <trk>
    <extensions>
      <htrk:HemaTrack>
        <htrk:difficulty>
          very_difficult
        </htrk:difficulty>
      </htrk:HemaTrack>
    </extensions>
  </trk>

 

We have an XSD definition for the namespace as well
 

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://hema-ota-test.s3.ap-southeast-2.amazonaws.com/gpx/extension-schema/v1" elementFormDefault="qualified" xmlns="http://hema-ota-test.s3.ap-southeast-2.amazonaws.com/gpx/extension-schema/v1" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    
    <xsd:annotation><xsd:documentation>
    This schema defines the Hema Maps extensions to be used with the GPX 1.1 schema.
    The root elements defined by this schema are intended to be used as child
    elements of the "extensions" elements in the GPX 1.1 schema. The GPX 1.1
    schema is available at http://www.topografix.com/GPX/1/1/gpx.xsd.
    </xsd:documentation></xsd:annotation>

    <xsd:element name="WaypointExtension" type="WaypointExtension_t"/>

    <xsd:element name="RouteExtension" type="RouteExtension_t"/>

    <xsd:element name="RoutePointExtension" type="RoutePointExtension_t"/>

    <xsd:element name="TrackExtension" type="TrackExtension_t"/>

    <xsd:element name="TrackPointExtension" type="TrackPointExtension_t"/>

    <xsd:complexType name="WaypointExtension_t">
        <xsd:annotation><xsd:documentation>
        This type contains data fields available in Hema waypoints that cannot
        be represented in waypoints in GPX 1.1 instances.
        </xsd:documentation></xsd:annotation>
        <xsd:sequence>
            <xsd:element name="Icon" type="Icon_t" minOccurs="0"/>
            <xsd:element name="DisplayMode" type="DisplayMode_t" minOccurs="0"/>
            <xsd:element name="Categories" type="Categories_t" minOccurs="0"/>
            <xsd:element name="Facilities" type="Facilities_t" minOccurs="0"/>
            <xsd:element name="Interests" type="Interests_t" minOccurs="0"/>
            <xsd:element name="Address" type="Address_t" minOccurs="0"/>
            <xsd:element name="PhoneNumber" type="PhoneNumber_t" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="Extensions" type="Extensions_t" minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="RouteExtension_t">
        <xsd:annotation><xsd:documentation>
        This type contains data fields available in Hema routes that cannot
        be represented in routes in GPX 1.1 instances.
        </xsd:documentation></xsd:annotation>
        <xsd:sequence>
            <xsd:element name="IsAutoNamed" type="xsd:boolean"/>
            <xsd:element name="HexColour" type="HexColour_t" minOccurs="0"/>
            <xsd:element name="Extensions" type="Extensions_t" minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="RoutePointExtension_t">
        <xsd:annotation><xsd:documentation>
        This type contains data fields available in Hema routes that cannot
        be represented in routes in GPX 1.1 instances.
        </xsd:documentation></xsd:annotation>
        <xsd:sequence>
            <xsd:element name="Subclass" type="Subclass_t" minOccurs="0"/>
            <xsd:element name="Extensions" type="Extensions_t" minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="TrackExtension_t">
        <xsd:annotation><xsd:documentation>
        This type contains data fields available in Hema tracks that cannot
        be represented in routes in GPX 1.1 instances.
        </xsd:documentation></xsd:annotation>
        <xsd:sequence>
            <xsd:element name="HexColour" type="HexColour_t" minOccurs="0"/>
            <xsd:element name="Difficulty" type="Difficulty_t" minOccurs="0"/>
            <xsd:element name="Extensions" type="Extensions_t" minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="TrackPointExtension_t">
        <xsd:annotation><xsd:documentation>
        This type contains data fields available in Hema track points that cannot
        be represented in track points in GPX 1.1 instances.
        </xsd:documentation></xsd:annotation>
        <xsd:sequence>
            <xsd:element name="Extensions" type="Extensions_t" minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>
    
    <!-- Complex Types -->

    <xsd:complexType name="Extensions_t">
        <xsd:annotation><xsd:documentation>
        This type provides the ability to extend any data type that includes it.
        </xsd:documentation></xsd:annotation>
        <xsd:sequence>
            <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="Icon_t">
        <xsd:annotation><xsd:documentation>
        Waypoint Icon
        </xsd:documentation></xsd:annotation>
        <xsd:sequence>
            <xsd:element name="Icon" type="xsd:string" maxOccurs="1"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="Categories_t">
        <xsd:annotation><xsd:documentation>
        This type contains a list of categories to which a waypoint has been assigned.
        Note that this list may contain categories which do not exist for a particular
        application installation.
        </xsd:documentation></xsd:annotation>
        <xsd:sequence>
            <xsd:element name="Category" type="xsd:string" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>
    
    <xsd:complexType name="Facilities_t">
        <xsd:annotation><xsd:documentation>
        This type contains a list of facilities to which a waypoint has been assigned.
        Note that this list may contain facilities which do not exist for a particular
        application installation.
        </xsd:documentation></xsd:annotation>
        <xsd:sequence>
            <xsd:element name="Facility" type="xsd:string" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>
    
    <xsd:complexType name="Interests_t">
        <xsd:annotation><xsd:documentation>
        This type contains a list of interests to which a waypoint has been assigned.
        Note that this list may contain interests which do not exist for a particular
        application installation.
        </xsd:documentation></xsd:annotation>
        <xsd:sequence>
            <xsd:element name="Interest" type="xsd:string" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="Address_t">
        <xsd:sequence>
            <xsd:element name="StreetAddress" type="xsd:token" minOccurs="0" maxOccurs="2"/>
            <xsd:element name="City" type="xsd:token" minOccurs="0"/>
            <xsd:element name="State" type="xsd:token" minOccurs="0"/>
            <xsd:element name="Country" type="xsd:token" minOccurs="0"/>
            <xsd:element name="PostalCode" type="xsd:token" minOccurs="0"/>
            <xsd:element name="Extensions" type="Extensions_t" minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="PhoneNumber_t">
        <xsd:simpleContent>
            <xsd:extension base="xsd:token">
                <xsd:attribute name="Category" type="xsd:token">
                    <xsd:annotation><xsd:documentation>
                    Category provides the ability to specify the type of a 
                    phone number. For example, a phone number can be categorized as
                    "Home", "Work", "Mobile" e.t.c
                    </xsd:documentation></xsd:annotation>
                </xsd:attribute>
            </xsd:extension>
        </xsd:simpleContent>
    </xsd:complexType>

    

    <!-- Simple Types -->

    <xsd:simpleType name="DisplayMode_t">
        <xsd:annotation><xsd:documentation>
        This type contains a string that specifies how a waypoint should be
        displayed on a map.
        </xsd:documentation></xsd:annotation>
        <xsd:restriction base="xsd:token">
            <xsd:enumeration value="SymbolOnly"/>
            <xsd:enumeration value="SymbolAndName"/>
            <xsd:enumeration value="SymbolAndDescription"/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="HexColour_t">
        <xsd:restriction base="xsd:hexBinary">
            <xsd:length value="3"/>
        </xsd:restriction>    
    </xsd:simpleType>

    <xsd:simpleType name="Subclass_t">
        <xsd:restriction base="xsd:hexBinary">
            <xsd:length value="18"/>
        </xsd:restriction>    
    </xsd:simpleType>

    <xsd:simpleType name="Difficulty_t">
        <xsd:restriction base="xsd:token">
            <xsd:enumeration value="easy"/>
            <xsd:enumeration value="medium"/>
            <xsd:enumeration value="difficult"/>
            <xsd:enumeration value="very_difficult"/>
        </xsd:restriction>
    </xsd:simpleType>

</xsd:schema>

 

 

Any assistance greatly appreciated

Be the first to reply!