RELAX NG スキーマ定義は妥当性検証を行う前に必ず、単純化 (simplification) というプロセスによって助長だが(プログラム等で)扱いやすい形に変形されます。 この変形の手順の概要は以下のようになっています(正式にはRELAX NG の仕様書を参照のこと):
- アノテーション
- 空白
- @datatype 属性
- <value> 要素の @type 属性
- @href 属性
- <externalRef> 要素
- <include> 要素
- <element>, <attribute> 要素の @name 属性
- @ns 属性
- QName
- <div> 要素
- 子要素の個数
- <mixed> 要素
- <optional> 要素
- <zeroOrMore> 要素
- 制限
- @combine 属性
- <grammar> 要素
- <define>, <ref> 要素
- <notAllowed> 要素
- <empty> 要素
このプロセスの結果、以下の要素が削除されます:
- <optional>
- <zeroOrMore>
- <mixed>
- <div>
- <parentRef>
- <externalRef>
- <include>
残りの要素を独断と偏見で分類すると次のようになります:
カテゴリー | 要素 |
---|---|
XML ノード | element, attribute, text, empty |
論理構造 | oneOrMore, choice, group, interleave |
文法構造 | grammar, start, define, ref, notAllowed |
値 | value, data, param, list |
名前 | name, anyName, nsName, except |