

* doctype 属性 (DOM Document 界面)

[1] 属性 [CODE[[VAR(DOM)[[[Document]]]].'''[CODE(DOM)[doctype]]''']]
(読取り専用。) は、当該文書の[[文書型宣言]]です。

[[XML]] 文書で、文書型宣言がなされていた場合には、
[CODE(DOM)[[[DocumentType]]]] が返されます。
文書型宣言が無い場合や、 [[HTML]] 文書の場合は、
[CODE(DOM)[[[null]]]] が返されます。

[2] [[DOM 1]] の >>2 の規定は、文書型宣言のある HTML
文書の存在を黙殺している点で問題があります。
しかしながら、 HTML (SGML な。) の文書型宣言も扱うとなると、
[[SGML]] の [[DTD]] の物体モデルにまで立入る必要が出てきますから、仕様策定や実装の労力が激増します。
妥協点として妥当なところかもしれません。

[4] >>2 でも、 [[DOM 2]] までは文書型定義は具体的には扱ってないからその問題は大して存在しないような。

ほんとの理由は、 HTML を SGML 的に扱ってる UA
がほぼ皆無だから、 DTD を扱うことに意味は無いし、
そんなことしてる UA なんてないだろう、っていうことでしょうな。

[3] DOM 1 は文書型定義の編集に対応していませんから、
この属性を設定することは出来ません
(し、その内容をいじることも出来ません)。

- [DOM1] ''Document Object Model (Core) Level 1'' <http://www.w3.org/TR/DOM-Level-1/level-one-core.html#attribute-doctype>

[5]
[[DOM水準1]]と [[DOM水準2]]は、 [[HTML]] [[文書]]では常に [CODE(IDL)@en[[[null]]]] だとしていました。
([[名無しさん]])

[6]
[[DOM水準3]]は、 [[HTML]] [[文書]]に実際に[[文書型宣言]]があるかに関わらず、
[CODE(DOMi)@en[[[DocumentType]]]] [[節点]]を返してもよいとしています。
([[名無しさん]])


[7]
不正な[[文書]]で、[[文書要素]]より後に
[CODE(DOMi)@en[[[DocumentType]]]] があったり、
複数 [CODE(DOMi)@en[[[DocumentType]]]]
があったりする場合にどうなるのかは不明です。
([[名無しさん]])


[[#comment]]


* メモ