我正在从复杂的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。它看起来是本地的,但它加载了两次。
有什么建议可以解决这个问题吗?
schemaLocation是一个URI(不是Linux文件名...)。处理器可能会识别出当您对同一URI有两个导入时,其中一个是冗余的。但是没有完美的方法来比较两个URI是否“相同”,除非它们由完全相同的字符序列组成。一些处理器可能尝试一些规范化(例如,如果它们是文件系统URI,则处理器可以检查文件系统是否是盲目的),其他处理器甚至不会尝试。通常,如果您使用不同的名称多次导入同一模式文档,则可能会发生冲突。