[7] [DFN[DOM0]] ([DFN[DOM [RUBY[水準][レベル]@en[level]] 0]]) は、
主に [[Webブラウザー]]によって実装されている、[[Web]] [[利用者エージェント]]の[[プラットフォーム][Webプラットフォーム]]
[[API][DOM API]] の総称です。

[8] 長らく [[DOM0]] は標準不在の状況が続いていましたが、最近では [[Web Applications 1.0]]
([[HTML5]]) によって規定されています。 (もっとも、 [[WA1]] では「[[DOM0]]」という語は使っていません。)

* DOM0 API

[28] 「[[DOM0]]」の範囲は曖昧ですが、次の機能 (の一部) を指して [[DOM0]] と言うことがあります。 

[FIG(table)[
:x:機能
:current:現行仕様
:old:旧仕様

:x:[13] [CODE(DOMi)@en[[[Window]]]]
:current:[[HTML Standard]]

:x:[14] [CODE(DOMi)@en[[[Navigator]]]]
:current:[[HTML Standard]]

:x:[15] [CODE(DOMi)@en[[[History]]]]
:current:[[HTML Standard]]

:x:[16] [CODE(DOMi)@en[[[Location]]]]
:current:[[HTML Standard]]

:x:[CODE(DOMi)@en[[[URLUtils]]]]
:current:[[HTML Standard]]
:old:[[URL Standard]]

:x:[17] [CODE(DOMi)@en[[[BarProp]]]]
:current:[[HTML Standard]]

:x:[20] [CODE(DOMi)@en[[[Screen]]]]
:current:[[CSSOM View]]

:x:[19] [CODE(DOMi)@en[[[Option]]]], [CODE(DOMi)@en[[[Image]]]]
:current:[[HTML Standard]]

:x:[21] [CODE(DOMi)@en[[[HTMLDocument]]]]
:current:[[HTML Standard]]
:old:[[DOM1 HTML]], [[DOM2 HTML]]

:x:[CODE(DOMi)@en[[[HTMLCollection]]]]
:current:[[DOM Standard]]
:old:[[DOM1 HTML]], [[DOM2 HTML]], [[HTML Standard]]

:x:[18] [CODE(JS)@en[[[navigator.mimeTypes]]]], [CODE(JS)@en[[[navigator.plugins]]]]
:current:[[HTML Standard]]

:x:[30] [[[CODE(DOMi)@en[String]] extras]]
:current: [[ES]] ([[ES2015]] 以後)
:old:[[JavaScript Standard]]

:x:[22] [RUBYB[[[イベントハンドラー]]]@en[event handler attributes]]
:current:[[HTML Standard]]
:old:[[HTML4]]

:x:[23] [CODE(DOM)@en[[[Event]]]]
:current:[[HTML Standard]], [[DOM Standard]], [[UI Events]]
:old:[[DOM2イベント]], [[DOM3イベント]]
]FIG]

[29] [[Netscape]] 2/3 や [[IE3]] が実装していた原初の [[DOM]] 
(当時でいう [[JavaScript]] のうち、[[クライアント]]側でのみ実装されていた [[API][DOM API]])
という意味では以上でしょうが、
[[W3C DOM]] 以前という意味で次のものも [[DOM0]] に含められることがあります。

[FIG(table)[
:x:機能
:current:現行仕様
:old:旧仕様

:x:[24] [[IE4 DOM]]
:current:[[HTML Standard]] / [[DOM Standard]]

:x:[CODE(JS)@en[[[document.layers]]]]
:current:廃止

:x:[25] [[IEのイベントモデル]]
:current:廃止

:x:[26] [[Netscape4のイベントモデル]]
:current:廃止

:x:[27] [[IEのCSSOM]]
:current:廃止

:x:[CODE(JS)@en[[[crypto]]]]
:current:[[Web Crypto]] (ただし旧機能は廃止)

:x:[CODE(JS)@en[[[escape]]]], [CODE(JS)@en[[[unescape]]]]
:current:[[ECMAScript]]

:x:[CODE(JS)@en[[[atob]]]], [CODE(JS)@en[[[btoa]]]]
:current:[[HTML Standard]]

:x:[CODE(JS)@en[[[window.external]]]]
:current:[[HTML Standard]] (しかしその後[[廃止]])
]FIG]

;; [33] ちなみに [[IE4]] / [[Netscape4]] 当時の [[JavaScript]]+[[DOM]] の機能は、
[[ECMAScript]] 本体仕様にあるものとここに示したものの他、 
[[LiveConnect]] と [[JSSS]]、[CODE(JS)@en[[[watch]]]]、
[[code signing]] ([CODE(HTML)[<script archive>]])、
[CODE(JS)@en[[[ActiveXObject]]]] くらいでしょうか。

* 歴史

** 「DOM0」の登場

[9] [[DOM1]] ではそれまで [[Webブラウザー]]で実装されていた [[JavaScript]] [[API]]
のすべてが標準化されたわけではありませんでした (むしろ旧来の JS API と共通する部分の方が少なかったです)。
そのため、[[DOM1]] 以前の [[DOM]] ということでそれらは「[[DOM水準0]]」と呼ばれるようになりました。

[1]
> [DFN[DOM [RUBYB[水準] [level]] 0]] とは、 [[NN]] 3.0 及び [[IE]] 3.0 で提供されていた機能の混合である。 

;; [CITE@en[Document Object Model (HTML) Level 1]]
<http://www.w3.org/TR/REC-DOM-Level-1/level-one-html.html#ID-1176245063>

[10] [[DOM0]] の範囲はそもそも明確ではありません。 >>1 の [[DOM1]] の説明に従うなら
NN3 と IE3 が実装していた機能ですが、その[[和集合]]なのか[[積集合]]なのか、
[[DOM0]] とそれ以外の [[JavaScript]] [[API]] の境界はどこなのか、
と細かいことを言えばきりがありません。現在では [[DOM1]] 以降に含まれる機能は「[[DOM0]]」
に含まないニュアンスで語られることが多いように感じますが、 >>1 では「[[DOM0]]
との互換性」が語られており、元々は [[DOM1]] の機能を除外する意図はなかったようです。
また、時代が下ると [[NN4]] や [[IE4]] 以降で追加された非標準の機能を「[[DOM0]]」
に含めることも出てきました。

** Web Applications 1.0

[11] [[W3C]] は [[DOM1]] 以後も「[[DOM0]]」の標準化に興味を示しませんでした。
しかし [[Webブラウザー]]は[[後方互換性]]のために引き続き [[DOM0]] [[API]]
を実装し続ける必要がありました。そうはいっても [[DOM0]] はほとんど undocumented
に近く、他の [[Webブラウザー]]の動作をリバースエンジニアリングするしかない状況でした。
ですから、大まかな動作こそ共通してはいても、すべてが実装されていなかったり、
細かな挙動が異なっていたりしていました。

[12] 2004年に設立された [[WHATWG]] は、[[Webアプリケーション]]のための新規 [[API]]
を整備すると共に、既存の [[Webブラウザー]]の undocumented な [[API]]
を標準化し、[[Web]] の[[相互運用性]]を向上させることを目指していきました。
[[DOM0]] の機能は当初は [[Web Controls 1.0]] で、後に [[Web Applications 1.0]]
で文書化されていき、現在ではほとんどの [[API]] が明確に規定されるに至っています。

* 関連

[32] [[Xen]] の [[dom0]] とは無関係です。

* メモ

- [2] NN2/IE3 以来の [[JavaScript]] の[[オブジェクト]]を、幾分汎用化して標準化したのが [[DOM]](1) でしたが、[[文書木]]ではなく[[ブラウザ]]の[[表示]]に関する部分とか、ブラウザの実装に強く依存する部分とかは、その後の DOM 2 や DOM 3 でも完全には標準化されずに残っています。また、標準化は不適当として落とされた機能も少なくありません。そのような DOM の周辺でありながら DOM ではない機能を、総称して DOM 0 と呼びます。[WEAK[DOM 1 勧告後にブラウザ実装が追加した機能もあります。]]
- [3] DOM 3 までで相当するほとんどの機能が標準化されるようですから、いずれ使われなくなっていくでしょうが、ブラウザ独自機能への access や互換性のために当分まだまだばりばり使われようことが予想されます。
- [4] このような事情ですから、 DOM 0 の仕様を規定した規格や DOM 0 という決まった集合があるわけではありません。敢えて言うなら、 [[Netscape]]/[[mozilla.org]] や [[M$]] の [[reference]] がそれに当たるでしょう。

[5]
[CITE[The Object Models]] <http://book.itzero.com/read/others/McGraw.Hill.Osborne.JavaScript.2.0.The.Complete.Reference.Second.Edition.eBook-LiB_html/8166final/LiB0066.html>
([[名無しさん]])


[6]
[CITE[mrclay.org &#187; Archive &#187; Kill these DOM0 shortcuts]] ([TIME[2007-06-26 22:21:27 +09:00]] 版) <http://mrclay.org/index.php/2007/06/25/kill-these-dom0-shortcuts/>
([[名無しさん]] [WEAK[2007-06-26 13:25:59 +00:00]])

[31] [CITE@en[Bring outdated parts of the FAQ up to date]]
([[sideshowbarker]]著, [TIME[2017-09-07 04:38:34 +09:00]])
<https://github.com/whatwg/html/commit/5d512fe6f54a332d13ff2d0fee59f12a8d1701b3>

[34] [CITE@en[Re: compatibility with the DOM Level 0]]
([[Michael Champion]]著, [TIME[1999-11-19 22:52:27 +09:00]])
<https://lists.w3.org/Archives/Public/www-dom/1999OctDec/0188.html>