微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何修复此XML模式?

如何解决如何修复此XML模式?

我正在尝试在具有IntelliJ Ultimate的XML模式上使用JAXB。这是IndoorGML网站上的架构。但是,IDE表示它有问题。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"  targetNamespace="http://www.opengis.net/indoorgml/1.0/core"
       xmlns:gml="http://www.opengis.net/gml/3.2" elementFormDefault="qualified" version="1.0.3">
<xs:annotation>
    <xs:documentation>
        IndoorGML is an OGC Standard. copyright (c) 2014,2015,2016,2018 Open Geospatial Consortium. To obtain additional rights of use,visit http://www.opengeospatial.org/legal/.
    </xs:documentation>
</xs:annotation>
<!--
 ======================================================================
-->
<xs:import namespace="http://www.opengis.net/gml/3.2" schemaLocation="http://schemas.opengis.net/gml/3.2.1/gml.xsd"/>
<!--
 ======================================================================
-->
<xs:element name="IndoorFeatures" type="IndoorFeaturesType" substitutionGroup="gml:AbstractFeature"/>
<!--

</xs:schema>

substitutionGroup =“ gml:AbstractFeature” 的最后一行中,IDE用红色标记 AbstractFeature 显示消息“无法解析符号'gml:AbstractFeature'”。有人知道为什么吗? (XSD文件在结束模式标签之前有更多标签,我没有在此处加上标签,因为它有几百行。)

提前谢谢! :)

解决方法

报告的错误与此参考有关:substitutionGroup="gml:AbstractFeature" ...正在尝试使“ IndoorFeatures”成为另一个名称空间中定义的替换组的成员。

但是哪个命名空间?由前缀“ gml”标识的名称空间。那是哪个名称空间?答案在这里:xmlns:gml="http://www.opengis.net/gml/3.2"

因此,我们需要找出将该名称空间导入此XSD的位置。在这里完成:

<xs:import namespace="http://www.opengis.net/gml/3.2" schemaLocation="http://schemas.opengis.net/gml/3.2.1/gml.xsd"/>

我认为错误的原因现在已经很明显了,但是我将继续并回答。定义该名称空间的XSD在此标识: schemaLocation="http://schemas.opengis.net/gml/3.2.1/gml.xsd"

很显然,您的应用程序无法解析该URL或不允许访问该URL。

如何解决?

如果您可以获得XSD的副本,则可以

a)将其保存到本地文件夹,然后将schemaLocation属性更改为指向本地文件夹,或者

b)定义一个架构解析器,将URL映射到您的文件夹位置。

不确定IntelliJ是否支持架构解析器,但我希望它支持。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。