start 要素
XML 文書のルート要素を定義
- 文書のルート要素を指定します(XML Schema や DTD では、「文書へのスキーマの埋め込み」を前提としているため、スキーマ内でルート要素を指定することは出来ません)。
属性
combine 属性
子ノード
- 複数の コンテナ もしくは サブコンテナ を子要素に持つことが出来ます。とりうる コンテナ の組み合わせは文書の形式によって制約を受けます。
-
ref要素 でマクロを指定しても構いません(通常はこちらを用いることが多いでしょう)。
ただし、XML の場合、参照先の define要素 の子要素が element要素 である必要があります。
- XML 文書では、最上位に要素を一つだけ持ちます(ルート要素)。最上位の grammar要素 では、直下の子要素の element要素 で指定された要素が、ルート要素となります。指定するルート要素は、複数あっても構いません。ただし、複数から択一になるので、choice要素 を「かます」必要があります。その場合、実際に検証される文書では、スキーマ内で指定されたルート要素のいずれか一つをルート要素にすることが出来ます。
使用例
例 1: ref要素 を用いる方法
<?xml version="1.0"?> <grammar xmlns="http://relaxng.org/ns/structure/1.0" ns="http://lena.org/"> <start> <ref name="document"/> </start> <define name="document"> <element name="document"> <empty/> </element> </define> </grammar>
例 2: choice要素 を用い、ルート要素を複数指定する方法
この例の場合、 doc1, doc2 いずれもルート要素とすることが出来る。ただし、内容の違いに注意。
<start> <choice> <element name="doc1"> <text/> </element> <element name="doc2"> <empty/> </element> </choice> </start>
例 3: start要素 を複数使用する方法
実質的には、上記と全く同一。
<start> <element name="doc1"> <text/> </element> </start> <start combine="choice"> <element name="doc2"> <empty/> </element> </start>
参考文献
- James Clark and Makoto Murata, ISO/IEC FDIS 19757-2 Document Schema Definition Language (DSDL) -- Part 2: Regular-grammar-based validation -- RELAX NG
- 古林 寛, 「start要素 @ ぽかぽか RELAX NG 工房」