XML替代组-替代组中包含哪些元素?

问题描述

我正在处理一组复杂的xsd文件,这些文件深层嵌套,类型之间具有深厚的关系/扩展名。

其中一个xsds定义了一个抽象元素,并且可以使用替换组

<xsd:element name="myElem" type="MyAbstractType" abstract="true"/> 

<xsd:element name="aaa" substitutionGroup="myElem">  

<xsd:element name="bbb" substitutionGroup="myElem">  

<!--... more elements follow,some are extending aaa,bbb,myElem...etc -->

我检查了所有导入的xsds,没有其他元素包含substitutionGroup="myElem",只有aaabbb包含它。

据我所知,只有aaabbb可以代替myElem。期。没有其他元素。

但是,令我惊讶的是,我得到了一个xml,其中包含与aaabbb(通过多层扩展)相关的元素,并且该xml似乎有效(我与多个验证程序进行了核对)

因此,我似乎不太了解替代机制。 除了aaabbb之外,还有哪些元素可能以这种使XML有效的方式干扰替代机制?

我的问题:

如何确定详尽的允许替换集?

也许xsd扩展某种程度上参与了替换机制?

谢谢

解决方法

op。此处:原来我错过了一些传递替换,例如

<xsd:element name="ccc" substitutionGroup="aaa">  

这意味着

元素ccc也是'root'myElem

的有效替代品