【问题标题】:What are the alternatives to have XML Schema 1.1 support by JAXB?JAXB 支持 XML Schema 1.1 的替代方法是什么?
【发布时间】:2015-01-26 21:21:30
【问题描述】:

从 WSDL 生成 Java 时出现错误。我想使用 XML Schema 的 1.1 特性 (xsd:assert)。它断言 Web 服务请求中是否有可用的元素。

 <xsd:assert test="(count(InstanceDetail[@OrderCodeType eq 'OFFERID']) eq 1)" />

我正在使用 Apache CXF v 2.6.1。使用 mvn generate-sources 选项时出现错误:

由 JAXB 引发:意外的 &lt;xsd:assert&gt; 出现在第 200 行第 3 列 架构文件:

研究了这个错误,我发现 JAXB 只支持 XML Schema 1.0,而这个特性在 XML Schema 1.1 中可用。如果是真的,我还有哪些其他选择?

【问题讨论】:

标签: java xml web-services jaxb xsd


【解决方案1】:

不,当前版本的 JAXB 不支持 XSD 1.1。例如,查看这些问题:

更新:

关于解决方案。就我个人而言,我会运行一个 XSLT,它会剥离所有 XSD 1.1。功能并返回 vanilla XSD 1.0 作为结果并使用 JAXB 编译它。不过,不确定如何在技术上使用 CXF 做到这一点。

【讨论】:

  • 谢谢!我认为这很清楚,但有什么可能的解决方案来克服这个问题?
  • @user1555524 请查看更新并提出建议。
【解决方案2】:

您始终可以在 XSD 1.0 之上使用 schematron (http://schematron.com/)。这有点棘手,但这样做您将拥有 XSD 1.1 的条件验证功能和与 XSD 解析器的兼容性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 2015-01-04
    相关资源
    最近更新 更多