xml substitutionGroups-子组中包括哪些元素



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

其中一个xsd定义了一个抽象元素,并为其提供了一个替换组

<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 -->

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

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

然而,令我惊讶的是,我得到了一个xml,它包含了与aaabbb(通过多层扩展(相关的元素,并且这个xml似乎是有效的(我用多个验证器进行了检查(。

因此,我似乎并不完全理解替代机制。除了aaabbb之外,还有哪些元素可能以这种方式干扰替换机制,从而使xml有效?

我的问题:

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

xsd扩展是否以某种方式参与了替换机制?

感谢

op。这里:原来我错过了一些可传递的替换,例如

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

这意味着

元素ccc也是"根"myElem的有效替代

最新更新