在定义名称空间时,使用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注释中的某处。
问题
javac
,因为schemagen
不会
将来会得到支持。你有任何意见吗?)其他信息
我在版本org.codehaus.mojo:jaxb2-maven-plugin
中使用1.5
。
我有某种类层次结构,甚至使用XmlAdapter来编组某些XmlRootelement
中包含的地图。一些父类共享相同的子元素。我最初的计划是为其相应目录中的每个XmlRootelement
自动创建一个独立的方案。
如果需要更多信息,我可以提供。
答案 0 :(得分:0)
我已经设法通过确保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")