DOMは,XMLやHTMLで記述された文書を構造化されたデータとして扱うためのAPI仕様の一つです。身近なところでは,JavaScriptなどのスクリプトでWebページを動的に書き換える,いわゆる「Dynamic HTML」の実現に使われています。ただし,DOMの仕様は特定のプログラム言語や実行環境に依存しないように規定されており,XML文書を扱う様々なアプリケーションに適用可能です。

 DOMはXML/HTML文書を複数のノード・オブジェクトで構成する木構造のデータとして扱います。DOMの仕様には,この文書ツリーを構成するデータ型や,文書ツリーを操作するメソッドなどが規定されています。

 DOMの仕様は,米Microsoftと米Netscape Communications(当時)が,自社のブラウザ(Internet Explorer 3.0およびNetscape Navigator 3.0)を強化する目的で追加したHTML文書の操作機能がもとになっています。これらは各社の独自仕様で,標準仕様にはなっていませんが,両者を合わせたものを便宜的に「DOM Level 0」と呼びます。

 その後,ブラウザ間の互換性を高めるために,World Wide Web Consortium(W3C,http://www.w3.org/)で標準化が進められ,1998年10月に最初のバージョンである「Document Object Model Level 1(DOM1)」が正式勧告となりました。DOM1の勧告後,DOMは機能別に複数の仕様に分けて策定されることになり,2000~2003年にかけて「DOM Level 2(DOM2)」の仕様群が勧告されました。

 DOM1で規定された機能はノードの追加/削除など,ごく基本的なものだけでしたが,DOM2では,ノードの範囲指定などの高度なノード操作が可能になったほか,文書スタイルの操作,イベント・モデルなどが規定されました。さらに拡張を施した「DOM Level 3(DOM3)」は現在も策定が進められています(一部は2004年に勧告済み)。DOM3は,読み込みと保存,妥当性の検証,XML Path Language(XPath)によるノード操作などの仕様を含みます。