opencaching/gpx-extension-v1

Comparing Groundspeak namespaces

Closed this issue · 1 comments

Groundspeak 1.0 vs. 1.0.1

There is just one change from Groundspeak GPX extension 1.0 to 1.0.1. Version 1.0.1 adds the new inc attribute to the attribute element:

      <xs:element name="attribute" msdata:Prefix="groundspeak" nillable="true" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:simpleContent msdata:ColumnName="attribute_Text" msdata:Ordinal="1">
            <xs:extension base="xs:string">
              <xs:attribute name="id" form="unqualified" type="xs:string" />
              <xs:attribute name="inc" form="unqualified" type="xs:byte" />
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>

inc is used as boolean (0 or 1). This effectively changes the attributes from boolean to tri-state:

  • attribute not present
  • attribut with inc="0" (negative attribute, e.g. "not at night")
  • attribute with inc="1" (positive attribute, e.g. "only at night")

Geocaching.com allows users to export Topografix 1.0 + Groundspeak 1.0, but none of the Opencaching sites do, and the users don't complain.

Sure. They simply assume inc="1" if it's missing.

If only new elements were added, why didn't Groundspeak simply add them as optional elements to the existing XML namespace?

I guess because (a) they didn't know better and (b) no GPX-reading application evaluates the XSDs. Developers just download sample GPX files, analyze them and parse them accordingly. I have parsed several XML file types in my applications, but I never cared about schema definitions.

Groundspeak 1.0.1 vs. 1.1

There are lots of changes from Groundspeak GPX extension 1.0.1 to 1.1:

  • A GUID attribute is added to the elements that represent caches, logs, users and travelbugs.
  • The date subelements lastUpdated and exported are added to the cache element.
  • Changed types of lots of elements from "string" to either "long", "decimal", "double" or "date".
  • Introduced a new enumeration type "logType" for the type log elements (instead of type "string").
  • Bugfix: changed "maxOccurs" of the attributes, logs and travelbugs elements from "unbounded" to 1.

Thanks. I'll try to describe these changes in the article.

If only new elements were added, why didn't Groundspeak simply add them as optional elements to the existing XML namespace?

I guess because (a) they didn't know better and (b) no GPX-reading application evaluates the XSDs. Developers just download sample GPX files, analyze them and parse them accordingly. I have parsed several XML file types in my applications, but I never cared about schema definitions.

Moved this to a separate thread.