我正在从复杂的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。它在本地查找,但它加载了两次。
任何建议如何解决?
答案 0 :(得分:0)
schemaLocation是一个URI(不是Linux文件名...)。处理器可能会认识到,当您为同一URI进行两次导入时,其中之一是多余的。但是,没有比较完美的方法来比较两个URI是否“相同”,除非它们由完全相同的字符序列组成。某些处理器可能会尝试进行某种规范化(例如,如果它们是文件系统URI,则处理器可能会检查文件系统是否区分大小写),而其他处理器甚至不会尝试。通常,如果使用不同的名称多次导入同一模式文档,则可能会发生冲突。