ENTITY

entity 要素 (HTML)

IE DTD の entity 要素

[1] HTMLentity 要素型は、 WinIE 3.0βの独自拡張と言われています。

その根拠とされるものは、おそらく M$ が公開した WinIE 3.0βの DTD (色々なところで手に入りますけど、たとえば <http://openlab.jp/k16/htmllint/notice.html#ie30b> を参照。1996年11月。) でしょう。 この DTD には、

<![ %HTML.Deprecated [
        <!ENTITY % phrase "EM | STRONG | DFN | CODE | SAMP | KBD | VAR | CITE | ENTITY | SPAN">
]]>

<!ENTITY % phrase "EM | STRONG | DFN | CODE | SAMP | KBD | VAR | CITE | SPAN">
という部分があります。要素型として ENTITY が登場するのはこの部分だけです。

つまり、非推奨な内容モデル行内要素 entity を参照しているのですが、その要素型は定義されていません。 (SGML 的には特に問題はありません。)

そして、 %phrase の要素型群は、

<!ELEMENT (%phrase) - - (%text)*>
<!ATTLIST (%phrase)
	%attrs;
	>
として宣言されています。

[2] では、なぜ IE3β DTD に定義されていないこの要素型が混入したのでしょうか。 この DTD の冒頭には This markup is based as much as possible on the DTD for HTML 3.2 published by W3C (also known as the Wilbur DTD), dated 5/31/96. と書かれていますので、 Wilbur DTD を探してみましたのですが、 5月6日付と8月13日付はあるもののその間のものは見つかりませんでした。 で、そのいずれも、相当部分は

<!ENTITY % phrase "EM | STRONG | DFN | CODE | SAMP | KBD | VAR | CITE">
となっています。もちろん他の部分でも entity 要素型は定義されていません。

Re: Deprecating FONT and CENTER <http://lists.w3.org/Archives/Public/www-html/1996May/0542.html> に、5月31日版からの修正案がありますが、残念なことに肝心の部分がありません。

[5] その後1996年5月31日版 HTML 3.2 DTD 案を発掘しましたが、 やはり entity 要素型はありませんでした。 その部分は >>3 の WinIE 2 用 DTD からそのまま由来している部分のようです。

[3] >>2 よりも前の 1996年3月に、同じ著者 (M$ の人) が WinIE 2.0 用の DTD を書いています。

>>2 と同様の

<![ %HTML.Deprecated [
	<!ENTITY % phrase "EM | STRONG | CODE | SAMP | KBD | VAR | CITE
		| DFN | ENTITY">
]]>

<!ENTITY % phrase "EM | STRONG | CODE | SAMP | KBD | VAR | CITE">
がある他に、
<![ %HTML.Deprecated [
<!ATTLIST (DFN | ENTITY)
	%attrs;
	>
]]>
という属性定義並び宣言があります。やはり要素型宣言はありません。

この属性定義並び宣言によれば、 id, class, lang 属性があることになります。 (この共通属性の定義は HTML 3.0 からコピってきたと注記されています。)

この DTD は HTML 2.0 draft をもとにして作ったと書かれているのですが、 やはり元の HTML 2.0 draft DTD に該当箇所はありません。

HTMLPro の entity 要素

[4] HTMLPro という処理系があって、色々な独自拡張を修正した DTD を持っていますが、この DTD には entity 要素型が定義されています。 注釈は EXPERIMENTAL SGML entity となっています。 同様に element 要素型や attrib 要素型も定義されています。 (SGML の要素型名や属性名や実体名をマーク付けするための要素型らしいです。)

説明文書によると、既存の entity 要素型や comment 要素型に elementattrib を加えて文書記述に実験的に導入してみたということです。

メモ