使用XJC从多个XSD生成Java类

kav*_*i77 4 java jaxb xjc

我有两个xsd文件:

base.xsd:

<schema
  targetNamespace="http://www.myorg.com/base"
  elementFormDefault="qualified"
  attributeFormDefault="unqualified"
  xmlns="http://www.w3.org/2001/XMLSchema">
...
<complexType name="NrmClass">
    ...
</complexType>
...
</schema>
Run Code Online (Sandbox Code Playgroud)

main.xsd是我们想要使用base.xsd中的类型的模式

<schema
  targetNamespace="http://www.myorg.com/main"
  elementFormDefault="qualified"
  xmlns="http://www.w3.org/2001/XMLSchema"
  xmlns:xn="http://www.myorg.com/base">

<import namespace="http://www.myorg.com/base"/>
...
<element>
  <complexType>
    <complexContent>
      <extension base="xn:NrmClass">
...

      </extension>
    </complexContent>
  </complexType>
</element>
...
</schema>
Run Code Online (Sandbox Code Playgroud)

当我尝试编译两者时,我收到以下错误:

> xjc base.xsd main.xsd
parsing a schema...
[ERROR] src-resolve: Cannot resolve the name 'xn:NrmClass' to a(n) 'type definition' component.
  line 48 of file:/main.xsd
Run Code Online (Sandbox Code Playgroud)

这有什么不对?

Pat*_* M. 5

您想尝试为要导入的XSD指定文件,如下所示:

<xsd:import namespace="http://www.myorg.com/base" schemaLocation="base.xsd"/>
Run Code Online (Sandbox Code Playgroud)

如果你将它们并排放置,这种方法效果很好.这样你就可以在一个操作中编译它们.

如果您想单独运行xjc(就像它们是作为单独的模块构建的那样),那么您可以使用剧集文件.