スキーマを作成しようとしていて、この問題に遭遇しましたが、機能するはずの解決策を見つけました ( XSD - 要素を任意の順序で何度でも許可する方法は? ) 私の場合はそうではありません。
<xsd:element name="foo">
<xsd:complexType>
<xsd:choice>
<xsd:element ref="p" maxOccurs="unbounded"/> *--element p is complex--*
<xsd:element ref="f" maxOccurs="unbounded"/> *--element f is complex--*
<xsd:element ref="summary"/>
</xsd:choice>
<xsd:attribute ref="type"/>
</xsd:complexType>
</xsd:element>
これを使用して以下の xml を検証すると、「予期しない子要素」というエラーが返されます。
<foo type="###">
<p type="###">
<pr date="##/##/##" amount="###"/>
<pr date="##/##/##" amount="###"/>
</p>
<f type="###">
<fr date="##/##/##" factor="###"/>
<fr date="##/##/##" factor="###"/>
</f>
<p type="###">
<pr date="##/##/##" amount="###"/>
<pr date="##/##/##" amount="###"/>
</p>
<f type="###">
<fr date="##/##/##" factor="###"/>
<fr date="##/##/##" factor="###"/>
</f>
<summary>
<p_summary date="##/##/##" p="####" dis="###" ......./>
<p_summary date="##/##/##" p="####" dis="###" ......./>
<p_summary date="##/##/##" p="####" dis="###" ......./>
</summary>
</foo>
pf と summary の定義は記載していませんが、どちらもそれぞれの要素 (fr、pr、p_summary) に対して maxOccurs="unbounded" を含んでいます。