我正在尝试使用 JAXB 将我无法控制的 XSD 转换为 Java 类。我得到的错误是:
[ERROR] cvc-pattern-valid: Value 'true' is not facet-valid with respect to pattern '0|1' for type 'BooleanType'.
line 139 of http://neon/meaweb/schema/common/meta/MXMeta.xsd
[ERROR] a-props-correct.2: Invalid value constraint value '1' in attribute 'mxencrypted'.
line 139 of http://neon/meaweb/schema/common/meta/MXMeta.xsd
XSD 中包含错误的代码位于:
<xsd:complexType name="MXCryptoType">
<xsd:simpleContent>
<xsd:extension base="xsd:base64Binary">
<xsd:attribute name="changed" type="ChangeIndicatorType" use="optional" />
<xsd:attribute name="mxencrypted" type="BooleanType" use="optional" default="1" />
</xsd:extension>
</xsd:simpleContent>
具体来说,它是使用 BooleanType 的属性 mxencrypted。BooleanType 定义为
<xsd:simpleType name="BooleanType">
<xsd:restriction base="xsd:boolean">
<xsd:pattern value="0|1" />
</xsd:restriction>
</xsd:simpleType>
从周围搜索来看,这似乎是一种常见的情况。据我所知,mxencrypted 行中的默认值不应该是 1?当我将 XSD 加载到 Liquid XML 中时,架构不会报告错误。在此处验证 XSD ( http://www.utilities-online.info/xsdvalidation/#.UV3zkL_EW0s ) 报告与 JAXB 相同的错误。
有没有办法告诉 JAXB 忽略这个问题,只生成忽略默认值的类?