可以在xs:sequence,
中使用xs:choice元素<xs:sequence>
<xs:choice>...</xs:choice>
</xs:sequence>
但不在xs:all里面。这是为什么?解析xml时是否会产生一些歧义?
答案 0 :(得分:3)
这只能由XML Schema的设计者真正回答。您可以将其提交给XSD新闻组(xmlschema-dev@w3.org)。我的猜测是模糊性和/或复杂性是问题所在。
例如,模糊性,考虑让一个包含两个子项的所有组作为选择组,并且每个子组都有一个名为“X”的元素,它们有两种不同的类型。当解析器遇到X元素时,X是它:属于第一选择组或第二选择组的那个(请注意它确实很重要,因为您必须知道要对哪个类型进行验证)?也许设计师可以指定约束来避免这种模糊,但也许这样做太复杂而且不值得。