DOM (Document Object Model)は、妥当なHTML、または整形式XMLで書かれた文書に対するAPIです。 これらの文書の(ほとんど)すべての内容にアクセスしたり、内容を変更したり、追加したり、削除したり、という動作を定義しています。 この規格自体はCORBAに従っているため、どのようなオブジェクト指向言語でも使うことができますが、 特にJavaやECMAScript(JavaScript, JScript)で使われることを想定しています。 この文書ではECMAScriptからDOMを用いるのを前提としています。
DOMでは、HTML, XML文書をオブジェクトがツリー状に集まったものとして論理構造を見立てています。例えば以下のような文書(の一部)は、下のツリーのようなオブジェクトの集まりとして考えられます。
<TABLE> <TBODY> <TR> <TD>Shady Grove</TD> <TD>Aeolian</TD> </TR> <TR> <TD>Over the River, Charlie</TD> <TD>Dorian</TD> </TR> </TBODY> </TABLE>
DOMは今のところ3つの水準に分かれていて、さらに水準の中でもいくつかの機能(モジュール)を選択して実装することが可能です。
Level 3のうち灰色背景の3はまだ正式なRecommendationになっていないものです。
モジュール名 | 仕様書 | 実装に必要なモジュール | 水準 | 注記 |
---|---|---|---|---|
Core | Core | - | 1, 2, 3 | Level 1では"XML" Fundamental Interfaces |
XML | Core | Core | 1, 2, 3 | Level 1では"XML" Extended Interfaces |
HTML | HTML | Core | 1, 2 | - |
Views | Views (Level 2), Views and Formatting (Level 3) | Core | 2, 3 | Level 3では"ViewsAndFormatting"に変更になる様子(Working Group Note) |
VisualViewsAndFormatting | Views and Formatting | ViewsAndFormatting | 3 | Working Group Note |
StyleSheets | Style | Core | 2 | - |
CSS | Style | Views, StyleSheets | 2 | - |
CSS2 | Style | CSS | 2 | - |
Events | Events | Core | 2, 3 | Level 3はWorking Group Note |
UIEvents | Events | Views, Events | 2, 3 | Level 3はWorking Group Note |
MouseEvents | Events | UIEvents | 2, 3 | Level 3はWorking Group Note |
TextEvents | Events | UIEvents | 3 | Working Group Note |
KeyboardEvents | Events | UIEvents | 3 | Working Group Note |
MutationEvents | Events | Events | 2, 3 | Level 3はWorking Group Note |
MutationNameEvents | Events | MutationEvents | 3 | Working Group Note |
HTMLEvents | Events | Events | 2, 3 | Level 3はWorking Group Note |
Traversal | Traversal and Range | Core | 2 | - |
Range | Traversal and Range | Core | 2 | - |
LS | Load and Save | Core | 3 | - |
LS-Async | Load and Save | LS | 3 | - |
Validation | Validation | Core | 3 | - |
XPath | XPath | Core | 3 | Working Group Note |
LS-AS | Abstruct Schemas | LS | 3 | Note |
AS-READ | Abstruct Schemas | Core | 3 | Note |
AS-EDIT | Abstruct Schemas | Core, LS-AS | 3 | Note |
AS-DOC | Abstruct Schemas | Core, LS-AS | 3 | Note |
定義されているモジュールがそれぞれ:
true
またはfalse
をとる普通の真偽値型。あまり真面目に調べていませんが、DOMImplementationのサンプルにそれらしき表があります。たまに書いていることもあります。
2009/4/19版zip圧縮 (139KB ← 309KB)
このリファレンスの閲覧のためのブラウザとしては、Firefox, Opera 7以降, Safari, Chromeを推奨しています。 Internet Explorer 7以下は非推奨です。 特に、定義区分を示すのに色分けを使っていますが、色盲への配慮としてIE7等では実装されていないCSSの:after疑似要素しか用意していません。
このリファレンスはできるだけDOMの仕様に従うように書いていますが、一部意図的に嘘を混ぜた部分があります。
基本的に(X)HTML+ECMAScript+DOMの利用を念頭に置いて作成しているので、(X)HTMLの事情やECMAScriptの事情に合わせて改変していることがあります。 Javaのように型に煩い言語だと、本来は違う型でキャストしなければ使えないものをまとめて書いていたりします。 仕様書では何らかの理由でややこしく書いていても、実態がシンプルならばシンプルな実態に合わせています。
このようなポリシーですので、単純に「仕様書と合っていない」等の批判はご遠慮願います。 逆に「その嘘は合理的でない」等の批判はどんどんいただきたいところです。
あと、たまにXML等への理解が欠けていて勘違い記述な嘘があるかもしれません。そのあたりもご指摘願えると幸いです。
全DOM仕様書(英文) DOM Technical Reports @ W3C
DOM1(和訳) 文書オブジェクトモデル(DOM)第1水準 仕様書 @ どら猫本舗
DOM2,3(和訳,編集) Scripts @ MetaGraphic Cell