include 要素

外部モジュールを取り込む要素

中身について

記述例

記述例1 (再定義を含める場合)

以下の一聯のファイルを例に挙げます。

ファイル1: schema1.rng
<?xml version="1.0"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
  ns="http://lena.org/">

<start>
 <element name="document">
   <ref name="para"/>
 </element>
</start>

<include href="schema2.rng">
 <define name="em-content"> <!-- "em-content" の再定義 -->
  <text/>
 </define>
</include>

</grammar>
ファイル2: schema2.rng
<?xml version="1.0"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
  ns="http://lena.org/">

<define name="para">
 <element name="em">
  <ref name="em-content"/>
 </element>
</define>

<define name="em-content">
  <empty/>
</define>

</grammar>

以上の場合、 schema1.rng の内容は、以下の内容と等価になります (マクロの展開はしておりません)。

<?xml version="1.0"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
  ns="http://lena.org/">

<start>
 <element name="document">
   <ref name="para"/>
 </element>
</start>

<define name="para">
 <element name="em">
  <ref name="em-content"/>
 </element>
</define>

<define name="em-content">
  <text/> <!-- define 要素によって上書きされた -->
</define>

</grammar>

記述例2 (異なる名前空間を有するスキーマの取り込み)

以下の一聯のファイルを例に挙げます。

ファイル1: schema1.rng
<?xml version="1.0"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
  ns="http://lena.org/">

<start>
 <element name="document">
   <ref name="para"/>
 </element>
</start>

<include href="schema2.rng"/>

</grammar>
ファイル2: schema2.rng
<?xml version="1.0"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
  ns="http://batz.org/">

<define name="para">
 <element name="em"><empty/></element>
</define>

</grammar>

以上の場合、 schema1.rng の内容は、以下の内容と等価になります。

<?xml version="1.0"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
  xmlns:lena="http://lena.org/" xmlns:batz="http://batz.org/">

<start>
 <element name="lena:document">
   <ref name="para"/>
 </element>
</start>

<define name="para">
 <element name="batz:em"><empty/></element>
</define>

</grammar>