xjc类型定义名称解析错误

时间:2012-09-14 15:38:35

标签: java xsd jaxb xjc xml-binding

当我想用XJC编译我的XSD(我不是作者)时,我遇到了麻烦。

具体来说,我得到了错误(实际上有更多这样的错误):

 [ERROR] src-resolve: Cannot resolve the name "ifopt:CountryRefStructure" to a(n) 'type definition' component.
   line 131 of file:/E:/ansdef/schema/siri-1.3/siri/siri_situationIdentity-v1.1.xsd

这很奇怪,因为上面提到的文件(siri_situationIdentity-v1.1.xsd)引用了另一个声明可疑类型的XSD。

我尝试了几件事

  • 切换Java版本以获得不同的xjc
  • 直接从java.net
  • 尝试了一些不同的xjc
  • 对文件应用了一些修改,以便删除当前应用的有关包含/导入的JAXB解决方法
  • 尝试使用具有依赖模式的整个目录作为xjc
  • 的目标
  • Altova XMLSpy Java代码生成运行良好且没有错误(但我没办法)

他们都没有工作。

有没有人知道错误信息是由什么引起的?我没有看到这一点。 您可以直接从这里获取所有XSD: Verband Deutscher Verkehrsunternehmen (VDV) - Ist-Daten-Schnittstellen

我尝试过的命令行(以及其他命令行)是:

xjc -readOnly -d generated -npa -target 2.1 -verbose VDV453_incl_454_V2.3e.xsd

非常感谢任何帮助或提示。

此致

2 个答案:

答案 0 :(得分:3)

此处的解决方案是使用-nv开关禁用严格验证。

答案 1 :(得分:1)

错误消息是由XJC无法成功加载其他架构文档引起的。你有几个选择。

  • xjc文档建议它接受多个命令行参数,因此请尝试指定您希望它作为命令行参数读取的所有模式文档。
  • 您还可以尝试找出用于解析相对引用的基URI,或者(更直接地)......
  • 您可以(尝试)弄清楚如何告诉XJC使用哪个基URI。
  • 由于XJC也支持XML目录,因此您可以使用目录告诉它在哪里可以找到您的顶级架构文档所指的文件。