[1] [[HTML]] の太古の[[要素型]]である [CODE(HTMLe)@en[[[xmp]]]]
と [CODE(HTMLe)@en[[[listing]]]] は、[[開始タグ]]以後、
対応する[[終了タグ]] ([CODE(HTMLe)@en[[[xmp]]]] なら
[CODE(HTML)@en[[CODE(HTMLe)@en[[[xmp]]]]>]]、
[CODE(HTMLe)@en[[[listing]]]] なら
[CODE(HTML)@en[[CODE(HTMLe)@en[[[listing]]]]>]])
以外のすべての[[マーク]]を[[認知]]''しません''。
このような[[要素]]の[[内容]]の[[マーク]]の解釈に関する性質を
[DFN@en[HTML-CDATA]] と (勝手に) 呼んでいます。
[2]
[[SGML]] の[[要素]]の[[内容]]の[[マーク]]の解釈の方法としての
[CODE(SGML)@en[[[CDATA]]]] も[[開始タグ]]以後ほとんどの[[マーク]]の[[認知]]を中止しますが、
[[開始タグ]]と同じ[[要素型名]]が入った[[終了タグ]]でなくても
(例えば[[空タグ]] [CODE(SGML)@en[>]] であっても)
そこで終わりとみなされます。ですから、
[CODE(HTML)@en[
... aaa ...]]
は [[SGML]] 的には本来許されないのです。
[3]
[[HTML]] の [[SGML]] 化にあたってこれが問題になり、
[CODE(HTMLe)@en[[[xmp]]]] と [CODE(HTMLe)@en[[[listing]]]]
は使わないことになりました。同じような[[要素型]]として
[CODE(HTMLe)@en[[[pre]]]] が追加されましたが、
こちらは [CODE@en[HTML-CDATA]] でも [[SGML]] の [CODE(SGML)@en[[[CDATA]]]]
でもなく、普通の[[内容]]を持つものとして定義されました。
[4]
ただし、 [CODE(HTMLe)@en[[[xmp]]]] と [CODE(HTMLe)@en[[[listing]]]]
も[[後方互換性]]のために仕様から削除されずに残りました。
[[HTML 2.0]] ([[RFC 1866]] : [[IETF]] [[提案標準]] = 当時)
では [CODE(HTMLe)@en[[[xmp]]]] と [CODE(HTMLe)@en[[[listing]]]]
は正式には [[SGML]] の [CODE(SGML)@en[[[CDATA]]]]
として規定されていましたが、以前からの [CODE@en[HTML-CDATA]]
としての解釈も説明されていました。
[WEAK[([[HTML 2.0]] は [[SGML応用]]だったので、 [[SGML]] 違反を正式に規定するわけにはいきませんでした。)]]
[CODE(HTMLe)@en[[[xmp]]]] と [CODE(HTMLe)@en[[[listing]]]]
はその後 [[HTML 2.x]] ([[RFC 2070]] : [[IETF]] [[提案標準]] = 当時)
と [[HTML 3.2]] ([[W3C]] [[勧告]]) にもそのまま残りましたが、
[[HTML 4.0]] ([[W3C]] [[勧告]]) で完全に削除されました。
[5]
仕様上は >>4 のような状況でしたが、 [[Webブラウザ]]の実装は元の
[CODE@en[HTML-CDATA]] のままでした。 [CODE(HTMLe)@en[[[xmp]]]]
や [CODE(HTMLe)@en[[[listing]]]] を使った[[文書]]は
[CODE(HTMLe)@en[[[pre]]]] の登場以後皆無といってよいのですが、
それ以前の[[文書]]との互換性のために現在でも [[SGML]]
に基づく [[HTML]] の仕様は無視されています。
メモ: そろそろ思い切って削除してしまってもよさそうなものですが、
主要な [[Webブラウザ]]で一度実装した[[要素型]]への対応を削除した例はほとんどありません。
[6]
[CODE(HTMLe)@en[[[plaintext]]]] [[要素型]]も [[HTML-CDATA]]
で実装されることがあります。この[[要素型]]の[[タグ]]は元々
[[HTML]] ではなく[[平文]]として以後解釈するべきことを示すもので、
当然[[終了タグ]]は存在しませんでした。
もちろん [[SGML]] としても微妙な存在です。
それがいつのまにか、他の[[要素型]]と同じように[[終了タグ]]を[[認知]]する
[[Webブラウザ]]が登場しました。しかしすべての [[Webブラウザ]]がそれに追随したわけではありませんから、
[[終了タグ]]を[[認知]]する [[Webブラウザ]]としない
[[Webブラウザ]]が混在しています。
[7]
[CODE(HTMLe)@en[[[title]]]] [[要素型]]も微妙な存在です。
[CODE(HTMLe)@en[[[title]]]] [[要素型]]は [[HTML]] が [[SGML]]
によって定義されるようになる前から存在していました。
祖の時は[[実体参照]]や[[文字参照]]もありませんでした。
そして [CODE(HTMLe)@en[[[title]]]] 内に[[マーク]]を入れることなど考えられなかったので、
[CODE(HTMLe)@en[[[title]]]] の[[開始タグ]]と[[終了タグ]]の間をそのまま題名として表示するように実装されていました。
[[SGML]] が意識されるようになって状況は徐々に変化していきました。
[[Webブラウザ]]によって[[文字参照]]や[[実体参照]]を解釈したり、
[[注釈宣言]]を解釈したりするようにもなりました。
[[空白]]の取扱いも他の[[要素型]]と同じようになっていきました。
[[開始タグ]]や[[終了タグ]]があっても (他の文脈と同じように、未知のものとして)
無視するブラウザも出てきました。しかし、
このような変化は一斉に起こったものではなく、現在も実装間で統一されていません。
[8] [CITE[IRC logs: freenode / #whatwg / 20091019]]
([TIME[2009-12-11 02:05:00 +09:00]] 版)