s4s-elt-invalid-content:元素 'attributeGroup' 无效

s4s-elt-invalid-content: Element 'attributeGroup' is invalid

我即将分叉现有的 XSD,但是,在接触它之前,我想要一个可用的工具链。输入 Eclipse。

有问题的 XSD 是: http://aixm.aero/schema/4.5/index.html

架构 "AIXM-Features.xsd" 是根据 this online tool 以及 xmllint:

有效的架构
$ xmllint --schema XMLSchema.xsd AIXM-Features.xsd --noout
AIXM-Features.xsd validates

然而,当我使用 Eclipse 对其进行验证时,它出现了 34 次,每次出现以下行错误:

<xsd:attributeGroup ref="Changes"/>

这是第一个验证错误:

Description Resource Path Location Type s4s-elt-invalid-content.1:
The content of 'AircraftClassType' is invalid.
> Element 'attributeGroup' is invalid, misplaced, or occurs too often.
AIXM-Features.xsd /afmx line 919 XML Schema Problem

知道这里发生了什么吗?

顺便说一句:Eclipse 使用基于 Xerces 的模式验证器。

貌似AIXM-Features.xsd不是写出来直接单独使用的。如您所见,它引用了一个 Changes 属性组,但没有定义它或包含它的任何定义。

注意AIXM-Snapshot.xsd定义它没有属性,

<xsd:attributeGroup name="Changes"/>

和AIXM-Update.xsd定义不同,

<xsd:attributeGroup name="Changes">
    <xsd:attribute name="chg" type="xsd:boolean" use="optional"/>
</xsd:attributeGroup>

如果您要添加

<xsd:include schemaLocation="AIXM-Update.xsd"/>

到AIXM-Features.xsd,错误就会消失。或者,您可以定义一个包含 AIXM-Features.xsd 和 AIXM-Update.xsd.

的包装器 XSD

最后说明:您引用的错误消息过于宽泛。是的,"invalid" 可以说适用,但实际上更好的诊断会指定引用的 Changes 无法解析为属性组。