有<xs:group>
出现在<xs:all>
内,但仅在<xs:sequence>
内有什么原因?
我们来看一个例子。比如,有一个标记列表(<a>
到<d>
和<e>
到<f>
- 请参阅下面的示例),这些标记没有按任何特定顺序出现,但始终包含在另一个对象(<foo>
或<bar>
); <foo>
= {<a>
,<b>
,<c>
,<d>
}; <bar>
= {<e>
,<b>
,<c>
,<f>
}:
<foo>
<a>a1</a>
<b>b1</b>
<c>c1</c>
<d>d1</d>
</foo>
<foo>
<d>d2</d>
<b>b2</b>
<c>c2</c>
<a>a2</a>
</foo>
<bar>
<e>e3</e>
<b>b3</b>
<c>c3</c>
<f>f3</f>
</bar>
我想将标记<b>
和<c>
提取到xs:group
,并在定义<xs:group ref="...">
的{i> complexType 时使用<foo>
和{ XSD中的{1}}。但是,由于上述限制,这是不可能的。
对于给定问题,您会建议什么作为解决方法?机会是,我做了一些愚蠢的事,但又为什么这是不正确的?
答案 0 :(得分:1)
我不能说为什么存在这种限制,尽管我可以看到功能齐全的<group>
(嵌套<choice>
和<all>
)在另一个{{{}}内的可能组合1}}对于开发人员来说可能有点混乱(好吧,无论如何),特别是对用户而言。
作为一种解决方法,我会建议您可能已经提出的内容:即为<all>
和<complexType>
声明另一个<b>
并使用 在<c>
和<foo>
:
<bar>
答案 1 :(得分:0)
确定性内容规则是限制的原因。如果您想要完全理解,请阅读van der Vlist的书或the standard。