SGMLにおける実体
SGML(
Standard Generalized Markup Language)は、文書の構造を定義するためのマークアップ言語です。その中で、一つの重要な概念が「実体(entity)」です。実体は、特定の
文字列や
データ型を関連付ける役割を持ち、SGML文書の基盤を形成しています。実体の概念は、後のXMLやHTMLにおいても引き続き使用されています。
実体の種類
実体は大きく分けて、包括実体とパラメータ実体の2つに分類されます。包括実体(general entity)は、文書の中でのみ参照可能ですが、パラメータ実体(parameter entity)は、主にドキュメント型定義(DTD)の中のみで使用されます。また、実体には解析対象と非解析対象があり、解析対象実体(parsed entity)は文書に組み込まれたテキストを含み、
構文解析が行われます。一方、非解析対象実体(unparsed entity)は、アプリケーションがその存在を認識するだけで、内容が解析されることはありません。
内部実体と外部実体
実体には内部実体(internal entity)と外部実体(external entity)という分類もあります。内部実体は同一文書内で定義され、その値は
リテラル文字列やその文書内のマークアップからなります。外部実体は別文書を呼び出すため、実体管理系とのやりとりが必要です。
システム実体
システム実体(system entity)は、特定のパラメータがオプションで付与されるため、それによりSGMLのパーサーは実体の内容をリソース識別子として解釈します。これにより、外部資源との関連が可能となります。
SGML文書実体
外部実体が完全なSGML文書を指す場合、その文書をSGML文書実体(SGML document entity)と呼びます。完全なSGML文書は、文書インスタンスのみならず、プロローグやオプションのSGML宣言を含む必要があります。
実体の定義
SGML文書における実体は、「実体宣言(entity declaration)」として定義されます。次のような宣言が可能です:
```sgml
```
この例では、特定の名前に対して
文字列や外部リソースを関連付けています。実体名はSGMLの命名規則に従う必要があり、適切に参照するためには文脈を考慮する必要があります。
実体の参照
実体を文書内で参照する際は、以下のように記述します:
```sgml
'&greeting1;' is a common test string.
The content of hello.txt is: &greeting2;
In Spanish, &greeting4;
```
これを解析すると、指定されたファイルの内容が組み込まれ、実体に関連する情報が出力します。例えば、greeting2が「Salutations」であった場合、結果は次のようになります。
```sgml
'Hello world' is a common test string.
The content of hello.txt is: Salutations
In Spanish, ¡Hola! means Hello!
```
このように、実体により文書構造や内容の効率的な管理が実現されます。ただし、定義されていない実体を参照しようとすると、エラーが発生することがあります。
文字実体
さらに、SGMLには文字実体があり、特定の文字を簡単に参照できる便利な機能を持っています。これにより、タイピングが難しい文字や特別な
文字コードを用いる必要がなくなります。例えば、HTML 4には252の文字実体があらかじめ用意されています。
このように、SGMLにおける実体は、文書の内容や構造を定義するために欠かせない要素であり、正しい理解と利用が求められます。