Entity Manager
SGMLのパーサーを使い始めるとEntity Managerという言葉に
出くわします(多分)。JIS X 4151 では、実体管理系と訳されていて、
- 複数の実体への使用を維持及び提供するファイルシステム又は記号表などのプログラム(プログラムの一部又はプログラムの組み合わせ)
であると定義しています。これに付いて私なりに理解していることを記します。
例えば、DTDで
<!ENTITY SGML-JP "文書記述言語SGML" >
と宣言し、文書で、
・・・を目的として、&SGML-JP;は策定された。
と記述したとします。このとき、例えばパーサーにこの文書を通す(言い方がちょっと
変ですね)と、
・・・を目的として、文書記述言語SGMLは策定された。
となります。この、&SGML-JP;を「文書記述言語SGML」に
置換する作業は、確かにパーサーがやっているんですが(この言い方が微妙)、
置換は以下のような手順でEntity Managerを介して、
行なわれていると考えています。
#詳細はアプリケーションに依存するはずです。以下は一つのモデルです。
- Entity Managerなるものが存在する(パーサーに組み込まれていてもいい)
- Entiy Managerは、アプリケーションの起動の時に、prologにある実体宣言や、catalog(と呼ばれる各種宣言の一覧表)にある実体宣言集合の在りかを記憶する
- パーサーが文字の解析をする
- 文書の中に実体参照が現われた
- 「これが実体だ」と、パーサーがEntity Managerに告げる
- 例えば、Entity ManagerにSGML-JPを渡す
- Entity Managerは、それの実体を探しまくり、見つかったら、その実体を返す
- それを受け取って、置換する
- ここで、&SGML-JP;は文書記述言語SGMLに置き換わる
- 2へ
だいたい、Entity Managerの役割はお分かり頂けたでしょうか?
miuraj@isc.meiji.ac.jp