コンテンツにスキップ

Document Object Model

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。Tarepan (会話 | 投稿記録) による 2019年9月20日 (金) 18:44個人設定で未設定ならUTC)時点の版 (DOMの日本語訳を慣例に則ったものへ修正)であり、現在の版とは大きく異なる場合があります。

ドキュメントオブジェクトモデル[1]: Document Object Model; DOM)は、マークアップがなされたリソース(Document)をリソース要素(Object)の木構造(Model)で表現し操作可能にする仕組み、またそのモデルである。

DOMは、HTML文書やXML文書(あるいはより単純なマークアップされた文章など)をオブジェクトの木構造モデルで表現することで、ドキュメントをプログラムから操作・利用することを可能にする仕組みである[2]。Documentの種類、操作に用いるプログラミング言語の種類に依存しない仕様である[3]

WHATWGがLiving Standardとして定義している。WHATWG以前はW3Cが仕様を策定しており、Level 1からLevel 4まで勧告している。

XMLを読み込むAPIであるSAXと異なり、XMLデータをツリー構造として扱う事ができる。ただし、通常の場合対象のXML文書を全て読み込んでからの扱いを前提とするため、動作速度が遅かったり、メモリーの使用量が大きくなるといった欠点もある。

DOMの実装は各メーカーに委ねられており、DOMを実装したXMLパーサが各メーカーから提供されている。

概要

DOMは、マークアップがなされたリソース(Document)をリソース要素(Object)の木構造(Model)で表現し操作可能にする。

対象: Document

DOMはDocument(マークアップがなされたあらゆるリソース: 日記から論文、インタラクティブなWebアプリまで)を対象とする[4]。マークアップとは文章(例: `これは文章です`)の一部を意味づけしたり構造を示したりするために付与される文字列であり(例: `<主語>これは</主語><述語>文章です</述語>`)、すなわちDOMはマークアップによる構造をもったリソースを対象としている。

表現: Object木モデル

DOMはDocumentをObjectの木構造として表現する。Document内にはマークアップによって区切られるまとまりがあり、各まとまりを特定種のオブジェクトで表現する(例: <主語>これは</主語> = 主語オブジェクト)。DOMにおいてオブジェクトは総称してNodeと呼ばれる[5]。Nodesは入れ子構造をとるため、これを木構造(親Nodeと子Nodeの入れ子構造)でモデル化できる。このようにDOMはマークアップされたまとまり/オブジェクトの木構造モデルによってドキュメントを表現する。

以下はDOMを説明する文章に、各部分が意味する内容をマークアップしたものである。

<!--マークアップがなされたリソース-->
<タイトル>DOMとはなにか</タイトル>
<本文><1行概要>DOMとはドキュメントをオブジェクトの木構造を示したものである。</1行概要><詳細>すなわちマークアップがなされたリソースを要素オブジェクトの入れ子構造でモデル化したものである。オブジェクトの例として<リスト>Element</リスト><リスト>Text</リスト><リスト>Comment</リスト>が挙げられる。</詳細></本文>

このDocumentを木構造として表現すると以下のようになる。

<!--木構造で表現されたリソース-->
<タイトル>DOMとはなにか</タイトル>
<本文>
    <1行概要>
        DOMとはドキュメントをオブジェクトの木構造を示したものである。
    </1行概要>
    <詳細>
        すなわちマークアップがなされたリソースを要素オブジェクトの入れ子構造でモデル化したものである。
        オブジェクトの例として
        <リスト>Element</リスト>
        <リスト>Text</リスト>
        <リスト>Comment</リスト>
        が挙げられる。
    </詳細>
</本文>

さらに各要素をObjectとして表現することでDOMのnode tree表現が以下のように得られる。

DOM node tree
DOM node tree

nodeはプログラムからアクセス可能なオブジェクトであり、このDOMで定義されるnode treeを操作することでDocumentをプログラムから操作できる。例えば新しいnodeを追加したり、特定のnodeを検索して内容を得たりする(一行概要のTextを取得する)ことが可能になる。

仕様

W3C勧告

W3Cによって、Level 1からLevel 4まで勧告されており、XML文書を扱う「Core」、HTML文書を扱う「HTML」等のモジュールに分かれている。

また、正式な仕様ではないが、Level 1 以前からある各ブラウザの独自実装を DOM Level 0 と呼称する場合がある[6]

Level 1

Level 2

Level 3

Level 4

DOM Level 4は、すでに活動を開始していたWHAWG DOM Living Standardの当時の版のスナップショットと言えるものである。

WHATWG DOM Living Standard

参照

  1. ^ DOM Living Standard. WHATWG.
  2. ^ APIと言われることが多いが、一応APIではない。Document Object Model (DOM) Level 1 Specification
  3. ^ Abstract. DOM defines a platform-neutral model for events, aborting activities, and node trees. DOM Living Standard.
  4. ^ In this specification, the term "document" is used for any markup-based resource, ranging from short static documents to long essays or reports with rich multimedia, as well as to fully-fledged interactive applications. DOM Living Standard
  5. ^ Document, DocumentType, DocumentFragment, Element, Text, ProcessingInstruction, and Comment objects (simply called nodes) participate in a tree, DOM Living Standard
  6. ^ 山田祥寛『JavaScript 本格入門』P.254

関連

外部リンク