XSD:xs:导入在加载具有不同大小写的XSD时失败

问题描述 投票:0回答:1

我正在从复杂的XSD生成Jaxb对象。在其他xsds中导入XSD会导致问题。这是它的不同之处

我的实际XSD文件名是:xsdname.v6.xsd

<xs:import namespace="urn::xsdname:v6" schemaLocation="XsdName.v6.xsd"/> 
<xs:import  namespace="urn::xsdname:v6" schemaLocation="xsdname.v6.xsd"/>

我得到的错误是

line 10039 of /src/main/schema/external/xsdname.v6.xsd
  'RefundDateTime' is already defined  
line 10048 of src/main/schema/external/XsdName.v6.xsd
  (related to above error) the first definition appears here

我假设目录文件将有助于解决问题,但它没有使用不同的URL。它看起来是本地的,但它加载了两次。

有什么建议可以解决这个问题吗?

java xml xsd jaxb xjc
1个回答
0
投票

schemaLocation是一个URI(不是Linux文件名...)。处理器可能会识别出当您对同一URI有两个导入时,其中一个是冗余的。但是没有完美的方法来比较两个URI是否“相同”,除非它们由完全相同的字符序列组成。一些处理器可能尝试一些规范化(例如,如果它们是文件系统URI,则处理器可以检查文件系统是否是盲目的),其他处理器甚至不会尝试。通常,如果您使用不同的名称多次导入同一模式文档,则可能会发生冲突。

© www.soinside.com 2019 - 2024. All rights reserved.