java - 定义命名空间时,使用 Maven 创建的架构验证 XML 失败

标签 java maven jaxb schemagen

定义命名空间时,使用 Maven 创建的架构验证 XML 失败,但 只要我不配置命名空间,就可以根据架构进行验证。

<transformSchemas>
<!--  doesn't work
    <transformSchema>
        <uri>tlm-classification</uri>
        <toPrefix>tlm-ec</toPrefix>
        <toFile>classification.xsd</toFile>
    </transformSchema>
-->
</transformSchemas>

如果我定义命名空间,添加 uri 并将命名空间添加到所有 jaxb 注释的 java 类,则会创建两个 XSD 文件而不是一个,并且验证失败:

src-resolve: Cannot resolve the name 'equipmentClassification' to a(n) 'type definition' component.

将两个 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 文件。但随着 XML 和单个非命名空间 XSD 的验证,错误一定位于 JAXB 注释中的某个位置。

问题

  • 为什么在定义命名空间时会创建两个 XSD 文件?
  • 对 JAXB 带注释的类进行注释时我必须考虑什么。
  • (因为建议使用javac,因为schemagen不会 今后会予以支持。您对此有什么意见吗?)

其他信息

我在 1.5 版本中使用 org.codehaus.mojo:jaxb2-maven-plugin

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

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

最佳答案

通过确保 Java 类注释共享相同的命名空间,我设法使其正常工作。

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

所有的java类都有:

@XmlRootElement(namespace ="http://some/namespace")
@XmlType(namespace ="http://some/namespace")

关于java - 定义命名空间时,使用 Maven 创建的架构验证 XML 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17810904/

相关文章:

java - 设置我使用 Clojure 对纯 Java 库进行单元测试的环境

spring - 使用 maven(不是 gradle)生成带有 spring rest docs 的 asciidoctor doc

java - 多线程写入文件时使用BufferReader读取文件

java - 使用哪个文本组件?

java - 如果从包含多个主机但不是副本集选项的 URI 创建 MongoClientURI 会发生什么?

java - 如何在 swagger codegen 中处理多种响应/返回类型(204 为空,400 非空等)?

maven - Gradle 将单个存档上传到多个存储库

wsdl - 如何自定义 JAX-WS 生成的 WSDL?

maven - 从复杂类生成 xsd 时,Jaxb2 maven 插件出错

java - 如何在 Java 中压缩对象流?