interleave 要素

順位不同の必須パターンを定義する要素

概要

どのようなものか

例えば、以下のようなスキーマの記述があったとします。

<element name="doc">
 <interleave>
  <element name="a"><empty/></element>
  <element name="b"><empty/></element>
  <element name="c"><empty/></element>
 </interleave>
</element>

上記のスキーマに照らし合わせれば、以下の記述はいずれも妥当なものとなります。

中身について

附記

入れ子の interleave 要素

interleave 要素の中の interleave 要素の中身は、 interleave 要素が無いものとして扱われます。つまり、以下の記述例は、全く同一の機能を有します。

記述例1
<interleave>
 <ref name="a"/>
 <interleave>
  <ref name="b"/>
  <ref name="c"/>
 </interleave>
</interleave>
記述例2
<interleave>
 <ref name="a"/>
 <ref name="b"/>
 <ref name="c"/>
</interleave>

empty 要素を含んだ interleave 要素

interleave 要素の子要素に1個以上の empty 要素が存在した場合、それらの empty 要素は、単に無視されます。

notAllowed 要素を含んだ interleave 要素

interleave 要素の子要素に1個以上の notAllowed 要素が存在した場合、 interleave の内容そのものが無視され、1つの notAllowed 要素として認識されます。

上記の現象は、
  1. 他の記述に混じって、「不許可」というパターンも適用させなければならない。
  2. 元のパターン (ここでは interleave 要素) そのものが「不許可」扱いされる。
  3. 元のパターン自体が「不許可というパターンを適用させるもの」と認識される。
と説明附けられると思われます。