WWW INFOMATION
XML top >>DTD仕様詳細 エンティティ宣言

エンティティ宣言 (Entity Declaration)

 エンティティ宣言とは、エンティティ参照を自分で定義できるようにするものです。
例えば、XML文章中に"世界のなんでも大全"という言葉が何度も出てくるとします。この場合、毎回書くのは手間なので"世界のなんでも大全"を文書中では、"Sekai"とだけ書くことにし、XMLを使用する場合は、プログラムが"Sekai"を"世界の何でも大全"に変換することとします。

 エンティティ宣言は、内部エンティティと外部エンティティの2種類あります。

・内部エンティティ

 文字列で置換を行う場合の記述方法です。
エンティティ参照は以下の形式で記述します。

<!ENTITY エンティティ名 "置換する文字列" >

 エンティティを使用する場合は、以下の形式で記述します。

& エンティティ名 ;

以下使用例です。

<?xml version="1.0" ?>
<!DOCTYPE A [

<!ELEMENT A(B)*>
<!ELEMENT B (#PCDATA)>
<!ATTLIST B Title CDATA #REQUIRED>
<!ENTETY Sekei "世界の何でも大全">

>
<A>
  <B Title="&Sekai;">&Sekei;は世界の様々なものを扱っています。</B>
上記は、
<B Title="世界の何でも大全">世界の何でも大全は世界の様々なものを扱っています。</B>
と同じです。

</A>

・外部エンティティ

 外部エンティティは、XML形式の外部のファイルの内容を丸ごと参照する方法です。
エンティティ参照は以下の形式で記述します。

<!ENTITY エンティティ名 SYSTEM "参照するファイル名" >

 ファイル名はURLでも構いません。また、外部エンティティの参照先が、広く知られたファイルである場合、以下の形式を使用することもできます。
<!ENTITY エンティティ名 PUBLIC 公開識別子 "参照するURL" >

公開識別子とは、以下の形式をしています。

-// もしくは +// DTDの作成者 // DTDの説明 // 言語指定

 ISO登録機関であれば、先頭が「+//」、ISO登録機関以外は「-//」になります。

 エンティティを使用する場合は、以下の形式で記述します。

& エンティティ名 ;

以下使用例です。

<?xml version="1.0" ?>

<!DOCTYPE A [ >

<!ELEMENT A (B)* >
<!ELEMENT B (#PCDATA) >

<!ENTITY Data1 SYSTEM "data1.xml">
<!ENTITY Data2 SYSTEM "data2.xml">

]>

<A>
&Data1;
&Data2;
</A>

・data1.xmlの内容
<B>いろりろ書いてある。</B>
<B>いっぱい書いてある。</B>

・data2.xmlの内容
<B>何か書いてある</B>
<B>様々に書いてある</B>

 ブラウザで表示した場合、使用例は以下のように表示されます。

<A>
 <B>いろりろ書いてある。</B>
 <B>いっぱい書いてある。</B>
 <B>何か書いてある</B>
 <B>様々に書いてある</B>
</A>

戻る   進む