You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XSL Stylesheet修正GPX文件wpt节点name字段位置错位问题

问题排查

你之前编写的XSL存在三个核心错误,无法实现修复GPX节点顺序的需求:

  • 未声明GPX的默认命名空间:你的GPX文件根节点绑定了http://www.topografix.com/GPX/1/1作为默认命名空间,XSL中必须显式声明该命名空间才能匹配到对应的节点
  • 命名空间定义错误:你之前定义的h命名空间为www.humminbird.com,少了http://前缀,和原文件的命名空间不一致,导致无法匹配h开头的节点
  • 逻辑不符需求:你之前写的XSL逻辑是输出CSV格式内容,不是保留原GPX结构调整节点顺序,所以无法生成符合要求的GPX文件

可用XSL模板

以下模板会保留原GPX文件所有属性、内容,仅调整wpt节点的子节点顺序为你要求的正确格式:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:gpx="http://www.topografix.com/GPX/1/1"
                xmlns:h="http://www.humminbird.com"
                version="1.0"
                exclude-result-prefixes="gpx h">
    <xsl:output method="xml" encoding="UTF-8" indent="yes" />
    <!-- 身份转换规则:默认拷贝所有原节点、属性不变 -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
    </xsl:template>
    <!-- 重写wpt节点的子节点输出顺序 -->
    <xsl:template match="gpx:wpt">
        <xsl:copy>
            <!-- 先拷贝wpt的lat、lon属性 -->
            <xsl:apply-templates select="@*" />
            <!-- 按正确顺序输出子节点 -->
            <xsl:apply-templates select="gpx:ele" />
            <xsl:apply-templates select="gpx:time" />
            <xsl:apply-templates select="gpx:name" />
            <xsl:apply-templates select="gpx:desc" />
            <xsl:apply-templates select="gpx:sym" />
            <xsl:apply-templates select="gpx:extensions" />
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

使用说明

直接用你现有支持XSL转换的工具,加载上述模板和你修改过的GPX文件执行转换即可,输出的文件所有wpt节点都会和你给出的第一个正确节点顺序完全一致,空name条目不会受影响。

内容的提问来源于stack exchange,提问作者Mike2718

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:57:02