Xml GPX轨迹中的交替颜色
这个问题是指: Garmin GPS轨迹提供为每条轨迹定义不同颜色的选项 作为对参考问题结果的完善,我想知道如何为每个GPS轨迹应用交替颜色。比如说1号。赛道(当天的所有赛道点)在第二节被涂成“洋红色”。白天被涂成黑色,第三天被涂成黑色。又是“洋红”了 使用节点(日期)在奇数天或偶数天之间交替,通常会在2天内产生相同的颜色。例如:3月31日至4月1日。将收到相同的颜色 应用于节点的颜色: 如何使用参考问题答案中提供的代码实现这一点Xml GPX轨迹中的交替颜色,xml,gps,xslt-1.0,gpx,Xml,Gps,Xslt 1.0,Gpx,这个问题是指: Garmin GPS轨迹提供为每条轨迹定义不同颜色的选项 作为对参考问题结果的完善,我想知道如何为每个GPS轨迹应用交替颜色。比如说1号。赛道(当天的所有赛道点)在第二节被涂成“洋红色”。白天被涂成黑色,第三天被涂成黑色。又是“洋红”了 使用节点(日期)在奇数天或偶数天之间交替,通常会在2天内产生相同的颜色。例如:3月31日至4月1日。将收到相同的颜色 应用于节点的颜色: 如何使用参考问题答案中提供的代码实现这一点 <trk> <name>ACTIVE L
<trk>
<name>ACTIVE LOG</name>
<extensions>
<gpxx:TrackExtension xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3">
<gpxx:DisplayColor>Magenta</gpxx:DisplayColor>
</gpxx:TrackExtension>
</extensions>
<trkseg>
活动日志
洋红
您可以将位置()除以2,然后检查是否有余数
<xsl:stylesheet version="1.0"
xmlns="http://www.topografix.com/GPX/1/1"
xmlns:gpx="http://www.topografix.com/GPX/1/1"
xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
exclude-result-prefixes="gpx">
<xsl:output indent="yes" encoding="utf-8"/>
<xsl:strip-space elements="*"/>
<xsl:key name="date" match="gpx:trkpt" use="substring(gpx:time,1,10)"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:for-each select="//gpx:trkpt[generate-id(key('date',substring(gpx:time,1,10))[1])=generate-id()]">
<trk>
<name>Trackpoints: <xsl:value-of select="substring(gpx:time,1,10)"/></name>
<extensions>
<gpxx:TrackExtension>
<xsl:choose>
<xsl:when test="position() mod 2 = 1">
<gpxx:DisplayColor>Magenta</gpxx:DisplayColor>
</xsl:when>
<xsl:otherwise>
<gpxx:DisplayColor>DarkGray</gpxx:DisplayColor>
</xsl:otherwise>
</xsl:choose>
</gpxx:TrackExtension>
</extensions>
<trkseg>
<xsl:for-each select="key('date',substring(gpx:time,1,10))">
<xsl:copy-of select="."/>
</xsl:for-each>
</trkseg>
</trk>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
轨迹点:
洋红
深灰色
太好了,非常感谢!!请注意:Garmin是一家英国公司,所以将“DarkGrey”编辑为“DarkGray”,一切都很好。+1您单独编辑这篇文章是值得投票的。@Mathias Müller-谢谢Mathias。顺便说一句,此XSLT还可用于包含航路点(将被剥离)的Garmin GPX文件。结果显示,输出结果是每天排序的所有轨迹点中最干净的集合(我见过)。在MapSource和BaseCamp中不再有凌乱的活动日志条目了。@snahl,呃,实际上我不是指你。当然,我指的是丹尼尔,他总是那么和蔼可亲,甚至对你(某种程度上)吹毛求疵的关于英国拼写的评论进行了编辑,而这些评论与编程无关。@Mathias Müller-对不起,我根本不是吹毛求疵的意思。我指出这一点的原因很简单,Daniel提供的这个伟大XSLT的结果输出在编写DarkGrey而不是(英国)DarkGray时不会加载到MapSource或BaseCamp中。而且直到现在我才意识到我可以尝试编辑其他人的答案。然而,现在一切都很好。