定义命名空间时,使用 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
以后将不再支持。您对此有什么意见吗?)
附加信息
我org.codehaus.mojo:jaxb2-maven-plugin
在版本中使用1.5
。
我有某种类层次结构,甚至使用 XmlAdapter 来编组包含在某些XmlRootelement
s 中的映射。一些父类共享相同的子元素。XmlRootelement
我最初的计划是在其对应的目录中为每个自动创建一个独立的方案。
如果需要更多信息,我可以提供。