GxpParser: add support for version 2 of Garmin's TrackPointExtension

This commit is contained in:
Thomas Kuehne
2025-10-24 21:36:06 +02:00
committed by José Rebelo
parent 4d9afdbfb8
commit b09ed96de6
3 changed files with 61 additions and 22 deletions
+41 -13
View File
@@ -4,9 +4,10 @@
xmlns:g3="http://www.garmin.com/xmlschemas/GpxExtensions/v3"
xmlns:gpx="http://www.topografix.com/GPX/1/1"
xmlns:tx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1"
xmlns:tx2="http://www.garmin.com/xmlschemas/TrackPointExtension/v2"
xmlns:w1="http://www.garmin.com/xmlschemas/WaypointExtension/v1"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
exclude-result-prefixes="ax g3 gpx tx w1"
exclude-result-prefixes="ax g3 gpx tx tx2 w1"
version="1.0">
<xsl:output
encoding="UTF-8"
@@ -65,6 +66,9 @@
<trkpt>
<xsl:call-template name="point" />
<xsl:choose>
<xsl:when test="gpx:extensions/tx2:TrackPointExtension/tx2:atemp">
<xsl:attribute name="temperature"><xsl:value-of select="gpx:extensions/tx2:TrackPointExtension/tx2:atemp" /></xsl:attribute>
</xsl:when>
<xsl:when test="gpx:extensions/tx:TrackPointExtension/tx:atemp">
<xsl:attribute name="temperature"><xsl:value-of select="gpx:extensions/tx:TrackPointExtension/tx:atemp" /></xsl:attribute>
</xsl:when>
@@ -72,18 +76,42 @@
<xsl:attribute name="temperature"><xsl:value-of select="gpx:extensions/g3:TrackPointExtension/g3:Temperature" /></xsl:attribute>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="gpx:extensions/tx:TrackPointExtension/tx:depth">
<xsl:attribute name="depth"><xsl:value-of select="gpx:extensions/tx:TrackPointExtension/tx:depth" /></xsl:attribute>
</xsl:when>
<xsl:when test="gpx:extensions/g3:TrackPointExtension/g3:Depth">
<xsl:attribute name="depth"><xsl:value-of select="gpx:extensions/g3:TrackPointExtension/g3:Depth" /></xsl:attribute>
</xsl:when>
</xsl:choose>
<xsl:if test="gpx:extensions/tx:TrackPointExtension/tx:hr"><xsl:attribute name="hr"><xsl:value-of select="gpx:extensions/tx:TrackPointExtension/tx:hr" /></xsl:attribute></xsl:if>
<xsl:if test="gpx:extensions/tx:TrackPointExtension/tx:cad"><xsl:attribute name="cad"><xsl:value-of select="gpx:extensions/tx:TrackPointExtension/tx:cad" /></xsl:attribute></xsl:if>
<xsl:if test="gpx:extensions/ax:TrackPointExtension/ax:speed"><xsl:attribute name="speed"><xsl:value-of select="gpx:extensions/ax:TrackPointExtension/ax:speed" /></xsl:attribute></xsl:if>
</trkpt>
<xsl:choose>
<xsl:when test="gpx:extensions/tx2:TrackPointExtension/tx2:depth">
<xsl:attribute name="depth"><xsl:value-of select="gpx:extensions/tx2:TrackPointExtension/tx2:depth" /></xsl:attribute>
</xsl:when>
<xsl:when test="gpx:extensions/tx:TrackPointExtension/tx:depth">
<xsl:attribute name="depth"><xsl:value-of select="gpx:extensions/tx:TrackPointExtension/tx:depth" /></xsl:attribute>
</xsl:when>
<xsl:when test="gpx:extensions/g3:TrackPointExtension/g3:Depth">
<xsl:attribute name="depth"><xsl:value-of select="gpx:extensions/g3:TrackPointExtension/g3:Depth" /></xsl:attribute>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="gpx:extensions/tx2:TrackPointExtension/tx2:hr">
<xsl:attribute name="hr"><xsl:value-of select="gpx:extensions/tx2:TrackPointExtension/tx2:hr" /></xsl:attribute>
</xsl:when>
<xsl:when test="gpx:extensions/tx:TrackPointExtension/tx:hr">
<xsl:attribute name="hr"><xsl:value-of select="gpx:extensions/tx:TrackPointExtension/tx:hr" /></xsl:attribute>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="gpx:extensions/tx2:TrackPointExtension/tx2:cad">
<xsl:attribute name="cad"><xsl:value-of select="gpx:extensions/tx2:TrackPointExtension/tx2:cad" /></xsl:attribute>
</xsl:when>
<xsl:when test="gpx:extensions/tx:TrackPointExtension/tx:cad">
<xsl:attribute name="cad"><xsl:value-of select="gpx:extensions/tx:TrackPointExtension/tx:cad" /></xsl:attribute>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="gpx:extensions/tx2:TrackPointExtension/tx2:speed">
<xsl:attribute name="speed"><xsl:value-of select="gpx:extensions/tx2:TrackPointExtension/tx2:speed" /></xsl:attribute>
</xsl:when>
<xsl:when test="gpx:extensions/ax:TrackPointExtension/ax:speed">
<xsl:attribute name="speed"><xsl:value-of select="gpx:extensions/ax:TrackPointExtension/ax:speed" /></xsl:attribute>
</xsl:when>
</xsl:choose>
</trkpt>
</xsl:template>
<xsl:template name="point">
+19 -8
View File
@@ -3,7 +3,8 @@
creator="Garmin Desktop App"
xmlns:ax="http://www.garmin.com/xmlschemas/ActivityExtension/v1"
xmlns:ge="http://www.garmin.com/xmlschemas/GpxExtensions/v3"
xmlns:tpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1"
xmlns:t1="http://www.garmin.com/xmlschemas/TrackPointExtension/v1"
xmlns:t2="http://www.garmin.com/xmlschemas/TrackPointExtension/v2"
xmlns:wpx="http://www.garmin.com/xmlschemas/WaypointExtension/v1"
>
@@ -82,12 +83,12 @@
<vdop>3.2</vdop>
<pdop>1.5</pdop>
<extensions>
<tpx:TrackPointExtension>
<tpx:atemp>28.3</tpx:atemp>
<tpx:depth>26.3</tpx:depth>
<tpx:hr>123</tpx:hr>
<tpx:cad>22</tpx:cad>
</tpx:TrackPointExtension>
<t1:TrackPointExtension>
<t1:atemp>28.3</t1:atemp>
<t1:depth>26.3</t1:depth>
<t1:hr>123</t1:hr>
<t1:cad>22</t1:cad>
</t1:TrackPointExtension>
<ax:TrackPointExtension>
<ax:speed>23.3</ax:speed>
</ax:TrackPointExtension>
@@ -106,7 +107,17 @@
</ge:TrackPointExtension>
</extensions>
</trkpt>
<trkpt lat="47.65594482421875" lon="9.47296142578125" />
<trkpt lat="47.65594482421875" lon="9.47296142578125">
<extensions>
<t2:TrackPointExtension>
<t2:atemp>40.4</t2:atemp>
<t2:depth>41.4</t2:depth>
<t2:hr>42</t2:hr>
<t2:cad>43</t2:cad>
<t2:speed>44.4</t2:speed>
</t2:TrackPointExtension>
</extensions>
</trkpt>
<trkpt lat="-43" lon="-19" />
</trkseg>
</trk>
+1 -1
View File
@@ -6,7 +6,7 @@
<trkseg>
<trkpt lat="47.5048828125" lon="9.7393798828125" ele="-440.2" time="2025-10-03T15:10:59Z" name="Tp1" desc="a description" sym="Summit" hdop="1.4" vdop="3.2" pdop="1.5" temperature="28.3" depth="26.3" hr="123" cad="22" speed="23.3"/>
<trkpt lat="47.60899250395596" lon="9.55604980699718" ele="8849.2" time="2025-10-03T15:20:59Z" name="Tp2" desc="a comment" sym="Water" temperature="34.3" depth="33.3"/>
<trkpt lat="47.65594482421875" lon="9.47296142578125"/>
<trkpt lat="47.65594482421875" lon="9.47296142578125" temperature="40.4" depth="41.4" hr="42" cad="43" speed="44.4"/>
<trkpt lat="-43" lon="-19"/>
</trkseg>
</trk>