externalRef 要素

外部スキーマをマクロとして参照する要素

各論

属性に関する説明

取り込まれる外部スキーマについて

ref 要素との違いは、 define 要素の中身を指定するか外部スキーマの内容を指定するかの違いだけで、原則として機能は全く同一です

つまり、 externalRef 要素で参照される外部スキーマの書式は、 define 要素の中身と成り得る書式と同一である必要があります。具体例に関しては後述します。

記述例

externalRef を使用した例

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

<start>
 <element name="drinkshop">
   <externalRef href="schema2.rng"/> <!-- 外部スキーマの参照 -->
 </element>
</start>

</grammar>
schema2.rng (最上位要素は大抵パターン関聯要素 ; ここでは choice 要素)
<?xml version="1.0"?>
<choice xmlns="http://relaxng.org/ns/structure/1.0">
 <element name="favoriteItem">
  <text/>
 </element>
 <element name="regularItem">
  <text/>
 </element>
</choice>

externalRef 要素を使わない場合

schema1.rng は、以下の記述と同一になります (強調部分は、 externalRef 要素によって取り込まれた記述)。

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

<start>
 <element name="drinkshop">
  <choice>
   <element name="favoriteItem">
    <text/>
   </element>
   <element name="regularItem">
    <text/>
   </element>
  </choice>
 </element>
</start>

</grammar>