XSD:xs:import在加载大小写不同的XSD时失败

时间:2019-04-02 16:23:34

标签: java xml xsd jaxb xjc

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

我实际的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。它在本地查找,但它加载了两次。

任何建议如何解决?

1 个答案:

答案 0 :(得分:0)

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