grammar
要素の子要素として記述することは出来ません。notAllowed
要素を含んだ各種パターン要素 (choice
など)の振舞いには、注意が必要です。詳しくは後述します。パターン中に記述された(もしくは参照先のマクロに含まれた) notAllowed
要素は、親要素に対して著しい影響を及ぼします。
choice
要素の子要素の中に一つ以上の notAllowed
要素が含まれた場合、 notAllowed
要素は無視され、その他のパターンのみが適用されます。choice
要素の中に notAllowed
要素もしくは notAllowed
要素と見倣される記述 (notAllowed
要素を子要素に持つ interleave
要素など)のみが存在する場合、その choice
要素自体が、一つの notAllowed
要素と見倣されます。notAllowed
要素は、一つの notAllowed
要素と見倣されます。
notAllowed
要素が必然的に適用されるパターンでは、もとのパターンの効果は無視され、全て一つの notAllowed
要素に置き換わります。例えば、 notAllowed
要素を一つ以上子要素に有する attribute
, group
, interleave
, oneOrMore
各要素がこれに相当します。zeroOrMore
, optional
各要素の子要素に notAllowed
要素が存在していた場合、これらのパターン自体が単に無視されます (notAllowed
要素には置き換わりません)。except
要素の子要素の中に一つ以上の notAllowed
要素が含まれた場合、 except
要素そのものの効果が消えます。notAllowed
要素を一つ以上子要素に持つ element
要素では、要素宣言そのものが破毀されます (の筈ですが、うまく検証プログラムで処理出来ないこともあります)。