从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中可用。如果是真的,我还有其他选择吗?
答案 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解析器的兼容性。