define 要素

マクロを定義する要素

各論

属性の説明

同じ名前を持つ複数の define 要素

中身について

記述例

define 要素と include 要素を用いた例

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

<start>
 <element name="document">
   <ref name="para"/> <!-- マクロの参照 -->
 </element>
</start>

<include href="schema2.rng"/> <!-- 外部ファイル取り込み -->

<define name="para" combine="choice">
 <element name="strong"><empty/></element>
</define>

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

<define name="para"> <!-- 外部ファイル中の define 要素 -->
 <element name="em"><empty/></element>
</define>

</grammar>

等価なスキーマ

上記のスキーマをマクロを使用しないで記述した場合、以下のようになります。

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

<start>
 <element name="document">
   <choice> <!-- define 要素の combine 属性による効果 -->
    <element name="strong"><empty/></element>
    <element name="em"><empty/></element>
   </choice>
 </element>
</start>

</grammar>