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>