【问题标题】:Debug KML: Namespace prefix xsi for schemaLocation on Document is not defined调试 KML:未定义 Document 上 schemaLocation 的命名空间前缀 xsi
【发布时间】:2017-01-30 09:19:00
【问题描述】:

我想提交由 ArcGIS 10.1 和 GoogleEarthPRO (GE) 生成的 KML 文件作为我在 Elsevier 中论文的补充数据。

但是,审阅者给我回信:“这里是属性“xsi:schemaLocation”的前缀“xsi”中的错误

当我尝试通过添加 .xml 扩展名并拖放到 Chrome 来简单验证 KML 文件时(如下:http://kml4earth.appspot.com/kmlBestPractice.html),我遇到了一个错误:

error on line 3 at column 217: Namespace prefix xsi for schemaLocation
on Document is not defined

我通过 ArcGIS 10.1(shp to KML,工具:Layer To KML)生成了 KML,它生成了压缩的 .kmz 文件。我在 GoogleEarthPRO 中打开了 .kmz 文件,并再次将我的位置保存为 .kml 文件。显然,.kml 文件运行良好,我可以在 GE 中打开该文件并在 PC 之间共享。

我也在这里尝试了 KMLvalidator:http://www.kmlvalidator.org/validate.htm 错误:

File upload request was rejected. (/data/tomcat/base-kml-validator/temp/upload_2a88fa18_1591832a38f__7fff_00001631.tmp (No such file or directory)).

我不明白为什么我的 .kml 文件似乎在多台 PC 上的 GoogleEarthPRO 中运行良好,但它显然包含 xsi for schemaLocation 中的错误? 最重要的,最简单的修复方法是什么?

我不熟悉编写 KML 代码的脚本,我只是 GE 的初学者和用户。请问,如何轻松修复我的 schemaLocation?

要下载的文件:https://www.dropbox.com/s/azmc6m1ksvtau7o/high_tatra_mts.kml?dl=0

谢谢!

【问题讨论】:

    标签: debugging kml google-earth


    【解决方案1】:

    Google 地球通常会忽略它不知道的名称空间和 XML 元素,因此作为无效 XML 文件的 KML 文件可能仍可在 Google 地球中查看。要在 Google 地球中启用错误检查,请打开工具/选项/常规并选中“显示所有错误提示”选项,然后打开您的 KML 文件。

    如果您的 KML 文件中存在命名空间错误,那么您需要在 KML 文件中声明它 - 通常在根元素中。

    以下是有效 KML 文件的结构:

    <?xml version="1.0" encoding="UTF-8"?>
    <kml xmlns="http://www.opengis.net/kml/2.2"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    ...
    </kml>
    

    请注意,Google 地球不会修复您的 KML 中的无效命名空间引用,因此必须在文本编辑器中修复这些内容并在 Google 地球外部进行验证。

    在您的特定示例中,xsi 声明和 schemaLocation 属性是不必要的,因此您的 KML 可以简化为:

    <kml xmlns="http://www.opengis.net/kml/2.2">
    ..
    </kml>
    

    【讨论】:

    • 谢谢@JasonM1。请,我应该在我的代码中的哪个位置插入 xmlns:xsi="w3.org/2001/XMLSchema-instance"> ? .kml 缩进和空间是特定的吗?有没有办法在不手动调整编码的情况下从 GE 保存正确的 .kml 文件?
    • GE 不会在您的 KML 中添加/修复命名空间。未绑定的命名空间仍然存在。需要在文本编辑器中打开并手动添加,然后在 GE 之外进行验证。
    • 请问,我应该插入代码的哪一部分,以及在我的代码中的什么位置?不幸的是,我没有使用 klm 的经验。请问,我只需要在我的代码中添加 xmlns:xsi="w3.org/2001/XMLSchema-instance" 吗?请把它插入我附件中的正确位置好吗?
    • 嗨@JasonM1,我在我的.kml 中添加了代码的“xmlns:xsi”部分。当我添加 .xml 扩展名并将其拖放到 Chrome 时,我收到消息:“此 XML 文件似乎没有任何与之关联的样式信息。文档树如下所示。”这也被认为是错误吗?
    • 尝试从您的原始 KML 文件中删除属性 xsi:schemaLocation="..."。这不是必需的。
    猜你喜欢
    • 2014-10-16
    • 2014-12-31
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多