【问题标题】:xjc errors out when using scd in binding customization在绑定自定义中使用 scd 时出现 xjc 错误
【发布时间】:2011-07-06 20:39:25
【问题描述】:

使用 scd 自定义绑定时,无法识别非 Sun jaxb 插件

例如,这不起作用:

<jaxb:bindings
    scd="/~fpml:TradeHeader">
    <ext:interfaces>
        example.TradeHeaderDelegateInterface
    </ext:interfaces>
</jaxb:bindings>    

但是,这是可行的:

<jaxb:bindings
    schemaLocation="../schemas/fpml-5-1/fpml-doc-5-1.xsd"
    node="/xsd:schema//xsd:complexType[@name='TradeHeader']">
    <ext:interfaces>
        example.TradeHeaderDelegateInterface
    </ext:interfaces>
</jaxb:bindings>

而且,这有效:

<jaxb:bindings 
    scd="/~fpml:CommodityMarketDisruption//fpml:marketDisruptionEvent">
    <jaxb:property name="marketDisruptionEvent"/>
</jaxb:bindings>

这让我觉得 scd 和第三方插件无法相处:

我得到的错误是:

[ERROR] Error while parsing schema(s).Location [ file:/C:/projects/domain-fpml-5-1/src/main/resources/xjb/fpml-5-1.xjb{40,19}].
org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'ext:interfaces'.

我的 .xjb 文件确实为“ext”前缀声明了命名空间,所以这不是问题。

有没有人使用过 xjc 插件(例如,jaxb commons 插件,如 Copyable 等)并让它与基于 scd 的定制一起使用?

我的 xjc 版本是:2.2.2,我正在使用 maven-jaxb2-plugin(版本 0.8.0)插件生成绑定。

感谢您的帮助,

阿拉维德

【问题讨论】:

标签: plugins maven jaxb


【解决方案1】:

maven-jaxb22-plugin:jar:0.8.1:runtime, com.sun.xml.bind:jaxb-impl:jar:2.2.5-b10:runtime, com.sun.xml.bind:jaxb-xjc :jar:2.2.5-b10:runtime] 仍然存在这个问题。

从查看 xjc 源代码(前段时间)来看,这不是一个简单的解决方法,因为定制不会“导入”到目标 xsd 中,并且处理发生在匹配组件的上下文中。

架构解析器就是这种情况,架构被“导入”到绑定上下文中,因此所有命名空间都是有效的。

我已将所有自定义设置恢复为模式样式。我记得当尝试在同一个绑定文件中同时执行 wsdl 和 xsd 时,这会产生痛苦的影响。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    相关资源
    最近更新 更多