choice 要素

選択肢を定義する要素

中身について

附記

入れ子の choice 要素

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

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

notAllowed 要素が含まれる choice 要素

notAllowed 要素と、それ以外のパターンを示す要素が同時に子要素である場合、 0個以上のnotAllowed 要素は無視されます。あってもなくても、選択には何ら影響を有しません

この機能は、モジュールを設計する際に役に立ちます。例えば、デフォルトでは「記述不可能」としておき、モジュールを結合させることで選択肢を設置もしくは増やす、といったことが出来ます。

empty 要素が含まれる choice 要素

要素の中身の定義に関し、 empty 要素と、それ以外のパターンを示す要素が同時に子要素である場合、 2個以上の empty 要素は無視されます。ただし、 notAllowed 要素の場合と違い、「空の記述 = 何も書かない状態」も許されることに注意してください(つまり、選択肢がオプション扱いされる)。