【发布时间】:2020-08-27 17:07:51
【问题描述】:
我正在处理一组复杂的 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",只有aaa和bbb包含它。
所以,据我了解,只有aaa 和bbb 可以替代myElem。时期。没有其他元素。
然而,令我惊讶的是,我得到了一个 xml,其中包含与aaa、bbb 相关的元素(通过多层扩展),并且这个 xml 似乎有效(我检查了多个验证器)。
所以看来我还没有完全理解替换机制。
除了aaa 和bbb 之外,还有哪些元素可能会干扰替换机制以使该xml 有效?
我的问题:
如何确定允许替换的详尽集合?
xsd 扩展是否可能以某种方式参与了替换机制?
谢谢
【问题讨论】:
标签: xml xsd xsd-validation xsd.exe xsd-1.1