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