mixed 要素として明示します。いわゆる「インライン要素」を作るのに便利です。mixed 要素の中身を空にしてはいけません。grammar 要素の直下には置いてはなりません。mixed 要素をルート要素とすることが出来ます。ただし、そのスキーマは単独では用いることは出来ず、 externalRef 要素の参照先としてのみ利用できます。empty 要素, text 要素もしくは attribute 要素だけを含む mixed 要素は、単一の text 要素と見倣されます。
説明要素の中に、インライン要素として 名前, 所属, 場所各要素がこの順番で出現するようにさせるためには、以下のようなスキーマ(の断片)を作成します。実際の文書の例も示します。
<element name="説明"> <mixed> <element name="所属"><text/></element> <element name="名前"><text/></element> <element name="場所"><text/></element> </mixed> </element>
<説明> 今日、<所属>テニス部</所属>の<名前>バッツ</名前>は、 <場所>202号教室</場所>にて会合に参加している。 </説明>
interleave, zeroOrMore 各要素などと組み合わせることにより、より高度な表現が可能になります。例えば、a要素と b 要素が任意のテキストを折り混ぜて任意の位置に任意の個数だけ並べられるようにするには、以下のように記述します。参考までに、mixed 要素を使わない例も併せて示します。
<element name="element">
<mixed>
<interleave>
<zeroOrMore>
<element name="a"><text/></element>
</zeroOrMore>
<zeroOrMore>
<element name="b"><text/></element>
</zeroOrMore>
</interleave>
</mixed>
</element>
<element name="element">
<zeroOrMore>
<choice>
<element name="a"><text/></element>
<element name="b"><text/></element>
<text/>
</choice>
</zeroOrMore>
</element>
上記の例では、 choice 要素を用いた方がすっきりしたものが出来ます。ただし、「どれかを必須要素としたい」場合などは、 choice 要素を使うことは出来ません。
例えば、「インライン要素a, b要素があり、a 要素は0個以上、 b 要素は一つだけ必ず出現しなければならない」というパターンを作りたい場合は、 mixed と interleave 各要素を使う必要があるでしょう。以下にスキーマの例を示します。
<element name="element">
<mixed>
<interleave>
<zeroOrMore>
<element name="a"><text/></element>
</zeroOrMore>
<element name="b"><text/></element>
</interleave>
</mixed>
</element>