【发布时间】:2016-04-07 22:44:53
【问题描述】:
我尝试为this xsd 生成 JAXB 类,它通过其 url 导入另一个 xsd,同样导入在内部运行到 2 个级别。 ie 这个 xsd 即 cwmp-1-4.xsd 导入其以前的版本 cwmp-1-3.xsd 并导入 cwmp -1-2.xsd.
尝试的解决方案 1:
我尝试生成 jaxb 类的命令是
$ xjc http://www.broadband-forum.org/cwmp/cwmp-1-4.xsd -httpproxy 192.168.100.100:3128
我得到的错误是
[ERROR] White spaces are required between publicId and systemId.
line 1 of http://www.broadband-forum.org/cwmp/cwmp-1-4.xsd
Failed to parse a schema.
尝试的解决方案 2:
然后我尝试下载所有 xsd(包括内部导入的)并将所有导入位置从“http://www.broadband-forum.org/cwmp/cwmp-1-3.xsd”替换为“cwmp-1-3.xsd”和“http://www.broadband-forum.org/cwmp/cwmp-1-2.xsd”替换为“cwmp-1 -2.xsd",这样就不会在互联网上查找依赖项并执行以下命令
$ xjc cwmp-1-4.xsd -httpproxy 192.168.100.100:3128
我得到的错误跟踪是
parsing a schema...
[ERROR] sch-props-correct.2: A schema cannot contain two global components with the same name; this schema contains two occurrences of 'urn:dslforum-org:cwmp-1-2,SessionTimeout'.
line 103 of file:/home/vivek/TR069/cwmp/cwmp-1-3.xsd
[ERROR] cvc-pattern-valid: Value 'false' is not facet-valid with respect to pattern '0|1' for type '#AnonType_mustUnderstand'.
line 107 of file:/home/vivek/TR069/cwmp/cwmp-1-3.xsd
[ERROR] a-props-correct.2: Invalid value constraint value '0' in attribute 'mustUnderstand'.
line 107 of file:/home/vivek/TR069/cwmp/cwmp-1-3.xsd
[ERROR] cvc-pattern-valid: Value 'true' is not facet-valid with respect to pattern '0|1' for type '#AnonType_mustUnderstand'.
line 88 of file:/home/vivek/TR069/cwmp/cwmp-1-2.xsd
[ERROR] a-props-correct.2: Invalid value constraint value '1' in attribute 'mustUnderstand'.
line 88 of file:/home/vivek/TR069/cwmp/cwmp-1-2.xsd
[ERROR] cvc-pattern-valid: Value 'true' is not facet-valid with respect to pattern '0|1' for type '#AnonType_mustUnderstand'.
line 98 of file:/home/vivek/TR069/cwmp/cwmp-1-2.xsd
[ERROR] a-props-correct.2: Invalid value constraint value '1' in attribute 'mustUnderstand'.
line 98 of file:/home/vivek/TR069/cwmp/cwmp-1-2.xsd
[ERROR] cvc-pattern-valid: Value 'false' is not facet-valid with respect to pattern '0|1' for type '#AnonType_mustUnderstand'.
line 107 of file:/home/vivek/TR069/cwmp/cwmp-1-3.xsd
[ERROR] a-props-correct.2: Invalid value constraint value '0' in attribute 'mustUnderstand'.
line 107 of file:/home/vivek/TR069/cwmp/cwmp-1-3.xsd
Failed to parse a schema.
尝试的解决方案 3:
然后尝试相同但没有验证选项
$ xjc cwmp-1-4.xsd -httpproxy 192.168.100.100:3128 -nv
最后我能够为 xsd 生成 jaxb 类。
现在我的问题和疑问是
- 为什么我不能通过在 Internet 上引用它来生成 jaxb 类?我确定我的网络路径没有问题?
- 尝试的解决方案 2 有哪些错误,为什么在使用标准协议定义架构时会出现这些错误?
- 如果没有验证选项,我可以生成类,但我不确定将来使用生成的类对 xml 进行编组和解组时是否会遇到任何问题?
- 而且我无法指定包名称选项(-P 选项),因为它表示已在使用的类(这个问题是最不优先的问题)
请任何人澄清我。感谢您在阅读这篇大文章时的大力支持和耐心等待.. :)
XSD' 供参考
https://www.broadband-forum.org/cwmp/cwmp-1-3.xsd(浏览器页面将为空,但如果您保存文件,您会看到内容)
注意:请以 .xsd 扩展名保存文件以查看内容
【问题讨论】:
-
您是否已将这些 XSD 提交给架构验证器?我的猜测(关于尝试 2)是模式 无效。
-
嗨,盖尔,我没有这样做。是否可以验证 xsd? bcoz 我知道要针对 xsd 验证 xml,但是如何验证 xsd?这里还需要注意的一点是,这些 xsd 是由宽带论坛定义的协议定义(称为 tr069),所以我有点不愿意怀疑 xsd 的正确性。请澄清我。谢谢。
标签: java xsd jaxb network-protocols