element 要素で指定された要素が、ルート要素となります。element 要素が define 要素の子要素である必要があります。choice 要素を「かます」必要があります。その場合、実際に検証される文書では、スキーマ内で指定されたルート要素のいずれか一つをルート要素にすることが出来ます。start 要素があっても構いません。その場合は、 combine 属性値を choice とし、選択形式として結合させる必要があります。<?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>
<start> <choice> <element name="doc1"> <text/> </element> <element name="doc2"> <empty/> </element> </choice> </start>
<start> <element name="doc1"> <text/> </element> </start> <start combine="choice"> <element name="doc2"> <empty/> </element> </start>
XML Schema や DTD では、「文書へのスキーマの埋め込み」を前提としているため、スキーマ内でルート要素を指定することは出来ません。