SGML/XML 文書に画像ファイルの参照を記述する場合、外部実体宣言(解析対象外の実体)を用いるのが一般的です。本文中ではこの宣言への参照を記述します。実体参照と実体宣言、解析後のテキストの関係は図5.1のようになります。
図 5.1 実体宣言・実体参照
実体宣言には内部実体宣言と外部実体宣言があります。画像ファイルのように、外部のデータを参照する場合は外部実体宣言を使用します。外部識別子の一般化された形式を次に示します。
<!ENTITY name (PUBLIC 公開識別子|SYSTEM システム識別子) NDataDeclare?>
“(A|B)” という形式は「A または B のいずれか」という意味で、画像ファイルの参照には “SYSTEM システム識別子” を利用します。実体宣言の詳細については SGML/XMLの専門書に説明を譲りますが、ひとまずのところ、“システム識別子” は PC に保存されているローカルファイルのパス名であると考えて差し支えありません。
もうひとつの “NDataDeclare?” は、NDataDeclare が 0 回または 1 回現れることを意味します(つまり省略可能を意味します)。NDataDeclare には、記法宣言への参照を記述します。記法宣言は以下の形式の宣言で、アプリケーションなどが何らかの処理を行う際のヒントなどに用いられます。
<!NOTATION 記法の名前 SYSTEM システム識別子>
NDataDeclare は次の形式で、宣言済みの記法の名前を記述します。
NDATA 記法の名前
要約すると、画像ファイルの参照を記述する場合は次の形式で記述することになります。
<!NOTATION 記法の名前 SYSTEM システム識別子> <!ENTITY name STSTEM システム識別子 NDATA 記法の名前>
ここで、記法宣言と実体宣言にそれぞれシステム識別子が登場していますが、記法宣言のシステム識別子は、DSSSL で画像ファイル参照を目的とする場合、画像ファイルのタイプを示す文字列、つまり “JPEG” や “TIFF” などになります。たとえば、“gourmet-map.jpg” というファイルを figure1 として参照する場合は、次のようになります。
例 5.1
<!NOTATION jpeg SYSTEM "JPEG"> <!ENTITY figure1 SYSTEM "gourmet-map.jpg" NDATA jpeg>