套用@Michael,No you can't do it.
如果您对某些规范阅读感兴趣,这就是描述的地方。
至于为什么有人要这样做,我可以举一个我经常看到的例子。我没有声称它适用于您的场景,但它应该可以帮助那些想知道为什么的人。
这一切都始于大多数人对模式的期望:准确验证他们想要的,仅此而已。然后假设如果 XML 是有效的模式,那么在后面的代码中就没有或几乎没有验证。这可能是人们可以看到这么多问题的原因,即使在 SO 上也是如此,这些问题涉及似乎推动人们想要使用 XSD 做的各种验证场景。
我经常遇到的是那些建立自己或参考(例如行业标准)这些精心设计的类型层次结构和替代组的人,他们意识到虽然在企业模型中使用它们是有意义的,但它关注端到端-最终,企业内的各个系统仅支持该类型层次结构的子集。
当 XSD 被编写为遵循开放内容的某些模式(通过抽象元素或抽象类型元素)时,包含这些额外类型或元素的模式将通过对 xsi:type 引用错误类型或使用替换组的错误成员。
为了说明,考虑一个基本抽象类型Address
;具体地址:加拿大、美国、墨西哥、英国。例如,使用英国地址而不是加拿大/美国/墨西哥对于特定的商业服务是无效的。
在您的情况下,假设 typea
对b
and/or 没有依赖关系c
,唯一的方法是将A.xsd拆分为A'和A''a
,然后在B.xsd中引用A'。有一些方法可以自动执行此操作,因此从维护角度来看,开销可能非常低;当通过自动 XML Schema Refactoring (XSR) 完成时,A.xsd的未来版本(我假设不是您的版本)可以轻松地与您的解决方案的其余部分集成。