2006 年 9 月 21 日 23 時 57 分

Document Object Model (DOM)


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


XML は、テキスト形式のデータ表現であるため、
それをプログラムで取り扱うためには、
タグや属性の構文解析が必要となる。

また、XML は要素や属性を自由に定義できるため、
プログラムで XML をデータとして利用する場合、
構文解析した XML を、何らかのデータ構造として、
プログラム独自のデータ構造に加工する必要がある。

例えば、C 言語であれば構造体だろうし、
Perl であれば連想配列だろう、
また、Java や C# では、専用の値クラスになるだろう。

つまり、XML を利用するためには、
XML の構文解析と、データ変換の 2 ステップの作業となる。

XML では文法を厳密に定め、曖昧性を排除したため、
要素や属性の役割や機能を知らなくても構文解析ができる。

つまり、構文解析の部分は、要素や属性の定義や、
それを利用するプログラムの種類に関わらず、
共通化して利用することができるのである。

この考え方で誕生したのが、Document Object Model だ。
Document Object Model (DOM) はオブジェクト指向で、
XML 要素や属性などを全てオブジェクトとして捉え、
階層構造を親子関係のオブジェクトとして取り扱う手法だ。

DOM では、クラスのインタフェースを説明する方法として、
OMG(オブジェクト指向技術の標準化団体)が提唱した、
IDL と呼ばれる汎用記述言語を使って示している。

DOM が定義しているのは、要素や属性などのオブジェクトと、
それらが持つプロパティやメソッドの詳細である。
いわば、クラスライブラリの外部設計仕様書に当たり、
特定のプログラミング言語に限定してはいない。

これにより、XML はファイルシステムのような役割となり、
DOM API を使うプログラムからは、XML の構文を意識せず、
階層構造を自由にたどれるようになるのだ。

DOM 自体は、XML 文書を扱うことを目標としていたが、
DOM は、WWW で利用されることを考慮しており、
DOM API 仕様に沿って Java や ECMAScript で利用する
場合のインタフェース定義を、付録として追記している。
(ECMAScript は、標準化された JavaScript だ)

また、DOM のモデルをそのまま HTML に適用し、
XML と同じように階層構造として取り扱う仕組みや、
HTML で定義されている要素や属性に特化した、
オブジェクトとしてアクセスする手法までも定義している。

これら、HTML や JavaScript に関する指針は、
Web ブラウザ側で HTML を自由自在に扱う、
Dynamic HTML の技術と非常に相性が良かった。

Dynamic HTML では、要素アクセス手段を
Web ブラウザによって異なっていたが、
DOM の登場によって、標準化する事ができるのである。
これは、Web 開発者にとって非常に有難い規格であった。

そのため、各社 Web ブラウザでは、XML の処理機能や、
DOM への準拠などが急速に進んでいくことになる。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.