如何解决如何修复此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 举报,一经查实,本站将立刻删除。