Entity Manager


SGMLのパーサーを使い始めるとEntity Managerという言葉に 出くわします(多分)。JIS X 4151 では、実体管理系と訳されていて、 であると定義しています。これに付いて私なりに理解していることを記します。
例えば、DTDで
	<!ENTITY SGML-JP  "文書記述言語SGML" >
と宣言し、文書で、
	・・・を目的として、&SGML-JP;は策定された。
と記述したとします。このとき、例えばパーサーにこの文書を通す(言い方がちょっと 変ですね)と、
	・・・を目的として、文書記述言語SGMLは策定された。
となります。この、&SGML-JP;を「文書記述言語SGML」に 置換する作業は、確かにパーサーがやっているんですが(この言い方が微妙)、 置換は以下のような手順でEntity Managerを介して、 行なわれていると考えています。
#詳細はアプリケーションに依存するはずです。以下は一つのモデルです。
  1. Entity Managerなるものが存在する(パーサーに組み込まれていてもいい)
  2. パーサーが文字の解析をする
  3. 文書の中に実体参照が現われた
  4. 「これが実体だ」と、パーサーがEntity Managerに告げる
  5. Entity Managerは、それの実体を探しまくり、見つかったら、その実体を返す
  6. それを受け取って、置換する
  7. 2へ

だいたい、Entity Managerの役割はお分かり頂けたでしょうか?
miuraj@isc.meiji.ac.jp