JAXB支持XML Schema 1.1有哪些替代方案?

时间:2015-01-26 21:21:30

标签: java xml web-services jaxb xsd

从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引发:第200行第3行出现意外<xsd:assert>   模式文件:

研究错误后,我发现JAXB仅支持XML Schema 1.0,并且此特性在XML Schema 1.1中可用。如果是真的,我还有其他选择吗?

2 个答案:

答案 0 :(得分:6)

不,当前版本的JAXB不支持XSD 1.1。例如,请参阅以下问题:

<强>更新

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

答案 1 :(得分:1)

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