Java 定义命名空间时,使用maven创建的模式验证XML失败

Java 定义命名空间时,使用maven创建的模式验证XML失败,java,maven,jaxb,schemagen,Java,Maven,Jaxb,Schemagen,定义命名空间时,使用maven创建的模式验证XML失败,但 只要不配置名称空间,就可以根据模式进行验证 <transformSchemas> <!-- doesn't work <transformSchema> <uri>tlm-classification</uri> <toPrefix>tlm-ec</toPrefix> <toFile>cla

定义命名空间时,使用maven创建的模式验证XML失败,但 只要不配置名称空间,就可以根据模式进行验证

<transformSchemas>
<!--  doesn't work
    <transformSchema>
        <uri>tlm-classification</uri>
        <toPrefix>tlm-ec</toPrefix>
        <toFile>classification.xsd</toFile>
    </transformSchema>
-->
</transformSchemas>
在我将两个xsd文件复制到类路径中之后,我得到了

cvc-complex-type.2.4.a: Invalid content was found starting with element 'name'. One of '{"tlm-equipmentclassification":count}' is expected.

在使用maven创建名称空间XSD时,我收到一条警告,我无法修复它, 也许错误与此有关

[INFO] --- jaxb2-maven-plugin:1.5:schemagen (default-cli) @ tlmsim ---
Note: Writing C:\dev\java\workspaces\tlm\tlmsim\schema1.xsd
Note: Writing C:\dev\java\workspaces\tlm\tlmsim\schema2.xsd
[WARNING] SimpleNamespaceResolver contained no localNamespaceURI; aborting rename.
我还可以提供xml和xsd文件。但是,随着XMLs和单个非命名空间XSD的验证,错误一定在JAXB注释中的某个地方

问题

  • 为什么在定义名称空间时会创建两个XSD文件
  • 我要考虑注释JAXB注释类。
  • (因为建议使用
    javac
    ,因为
    schemagen
    不会 将来会得到支持。您对此有何意见?)
其他信息

我正在使用
org.codehaus.mojo:jaxb2maven插件
版本
1.5

我有一些类层次结构,甚至使用XmlAdapter来整理包含在一些
XmlRootelement
s中的映射。某些父类共享相同的子元素。我最初的计划是为相应目录中的每个
XmlRootelement
自动创建一个独立的方案


如果需要更多的信息,我可以提供。

我通过确保Java类注释共享相同的名称空间,成功地让它工作起来

   <transformSchemas>
    <transformSchema>
     <uri>http://some/namespace</uri>
     <toPrefix>some</toPrefix>
     <toFile>some_schema.xsd</toFile>
    </transformSchema>
   </transformSchemas>

通过确保Java类注释共享相同的名称空间,我成功地实现了它

   <transformSchemas>
    <transformSchema>
     <uri>http://some/namespace</uri>
     <toPrefix>some</toPrefix>
     <toFile>some_schema.xsd</toFile>
    </transformSchema>
   </transformSchemas>

我只是不使用名称空间,而是手动进行重命名。。。但是我仍然希望它能工作。如何在Java注释类中定义名称空间?
@XmlRootElement
@XmlElement
有一个
名称空间
字段,我在每个相关类中都设置了它。对我来说,我只使用@XmlType注释定义所有类,这也是我的计划。我认为这个插件不适合我们:-)我只是不使用名称空间,而是手动重命名。。。但是我仍然希望它能工作。如何在Java注释类中定义名称空间?
@XmlRootElement
@XmlElement
有一个
名称空间
字段,我在每个相关类中都设置了它。对我来说,我只使用@XmlType注释定义所有类,这也是我的计划。我觉得这个插件不适合我们:-)
@XmlRootElement(namespace ="http://some/namespace")
@XmlType(namespace ="http://some/namespace")