第23回 実体宣言の概要と内部実体宣言 Page 3

川俣 晶
株式会社ピーデー
2004/7/9

内部実体の定義

 次は、「4.2.1 Internal Entities(4.2.1 内部実体)」を読んでいこう。ここは、さほど長くない。その代わり、次回解説予定の「4.2.2 External Entities(4.2.2 外部実体)」はとても長いので、ここはリラックスしながら読むようにして、やる気は温存しておくとよいだろう。

 まず、Internal Entity(内部実体)という用語の定義から始まる。

[Definition: If the entity definition is an EntityValue, the defined entity is called an internal entity. There is no separate physical storage object, and the content of the entity is given in the declaration.] Note that some processing of entity and character references in the literal entity value may be required to produce the correct replacement text: see 4.5 Construction of Internal Entity Replacement Text.
[定義:実体の定義がEntityValueのとき、これを内部実体という。これは、別個の物理的記憶単位を持たず、実体の内容は宣言内で与える。] 正しく置換テキストを生成するには、リテラル実体値内での実体参照および文字参照の処理が必要となるかもしれないことに注意する。詳細は、4.5 内部実体置換テキストの構築を参照。

 Definitionの文字にマウスポインタを合わせてみると、「Internal Entity Replacement Text」(内部実体置換テキスト)という用語の定義であるかのように見えるが、太字になっているのはInternal Entity(内部実体)という文字である。文脈から見て、Internal Entity(内部実体)の用語定義と解釈してよいのではないかと思う。

 さて、最初の文から見ていこう。EntityValueは、上に出てきた生成規則[9] EntityValueである。このように引用符でくくったテキストによって表現される実体を内部実体という、というわけである。次の文章では、生成規則[9] EntityValueによって記述される内容は、当然、宣言の内部に書き込まれることになり、宣言外に実体を置くわけではない。ここまでが、用語定義である。以下は普通の文章が続く。

 次は見てのとおり、注意書きである。置換テキストは、内部実体への参照を置き換えるべきテキストのことだが、それはただ単に生成規則[9] EntityValueの中身を持ってくればよいわけではなく、そこに含まれる実体参照および文字参照も処理しなければならないわけである。

 最後に、詳しい説明が「4.5 Construction of Internal Entity Replacement Text(4.5 内部実体置換テキスト)」にあることを示している。いずれ、そこも読んでいくことになるので、そのときに詳しく取り上げよう。

 次は非常に短い文章だが重要である。

An internal entity is a parsed entity.
内部実体は、解析対象実体とする。

 外部実体は、解析対象実体である場合もあれば、解析対象「外」実体である場合もある。しかし、内部実体は、常に解析対象実体だ、ということである。その理由は、内部実体は外部には存在せず、宣言内で内容が与えられる、という性質から考えると何となく分かるのではないだろうか。宣言内に内容を書けるということは、宣言を記述する制約の中に収まる内容しか記述することができず、必然的に解析対象「外」実体を記述することはできないことになってしまう。

内部実体宣言の例

 次は、内部実体宣言の例である。

Example of an internal entity declaration:

<!ENTITY Pub-Status "This is a pre-release of the
 specification.">

 ここでは、Pub-Statusという名前を持ち、"This is a pre-release of the specification."という値を持つ内部実体を宣言している。例えば、以下のようなXML文書があったとしよう。

<p>Status: &Pub-Status;</p>

 これを上記の内部実体宣言を用いて解析すると、以下のような文書として扱われることになる。

<p>Status: This is a pre-release of the specification.</p>

 さて、以上で「4.2 Entity Declarations(4.2 実体宣言)」から「4.2.1 Internal Entities(4.2.1 内部実体)」までを読み切った。今回は、実体宣言の中でも内部実体の宣言についてのみ読んだが、もちろん内部実体のほかに外部実体もある。それがどのように規定されているか知るために、次回は、「4.2.2 External Entities(4.2.2 外部実体)」を読んでいこう。内部実体と比較して、外部実体は複雑怪奇な部分があるが、ぜひそれを読み切って、実体宣言に関する自信をつかみ取ろう。(次回に続く)

3/3  

 Index
やさしく読む「XML 1.0勧告」 第23回
実体宣言の概要と内部実体宣言
  Page 1
実体宣言の概要
実体宣言にまつわる問題点
  Page 2
実体宣言の定義
実体宣言の生成規則
実体宣言の規定
Page 3
内部実体の定義
内部実体宣言の例


連載 やさしく読む「XML 1.0勧告」


XML & SOA フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日月間