人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

DOM(Document Object Model)についてわかりやすく教えてください。

言語中立とはどういうことなのか?
DOMのメリット?
など

知識が浅いので簡単な言葉で教えていただけると助かります。

●質問者: the_yakisoba
●カテゴリ:インターネット ウェブ制作
✍キーワード:Document Object Model DOM メリット 言語
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● wizemperor
●23ポイント

言語中立とは、文字通りプログラミング言語に依存しないことです。

つまり、DOMの概念を理解しておけば、どんなプログラミング言語でも(その言語が対応してれば)似たような感じで使うことができます。

実際には言語ごとに「使い方」に違いがありますが、考え方は同じです。


メリットは、HTMLやXMLなどの特定の部分を簡単に抽出、変更、削除できることです。

特定の部分を好きなところから簡単に操作できるので、プログラムも簡単になります。


2 ● ken33jp
●23ポイント

http://ja.wikipedia.org/wiki/Document_Object_Model

>言語中立とはどういうことなのか?

どのプログラム言語からも使えるような仕様にしてるということです。

最近の言語なら、ライブラリかなにかで特に意識しなくてもDOMが

扱えるようになってます。

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

DOMは本来そういう性質のもですが、最近のマシンパワーとメモリーではそんなことを

意識しなくてもよくなったということです。メリットは、データの標準フォーマットとして

使えるという点です。

◎質問者からの返答

>データの標準フォーマットとして使えるという点です。

この部分をもう少し噛み砕いて教えていただけますか。

具体例があると助かります。


3 ● seikoudoku2000
●22ポイント

自分の理解としては、HTMLやXMLのDocument内の各要素を、様々な言語でObjectとして扱うことができるように定めたルールというイメージです。

<html>
<body>
 <table>
 <tr>
 <td>
 <span id="spanObj">aaa</span>
 </td>
 <td>
 <div id="divObj">bbb</div>
 </td>
 </tr>
 </table>
</body>
</html>

例えばこんなHTMLがあった時に、プログラムからdivの中の値を知りたい時にjavascriptでは

var divValue = document.getElementById("divObj").innerText;

のように書ける。

書き換えたい時は

document.getElementById("divObj").innerText = "xxx";

(他にもノードを辿っていったり、タグ名から要素を取得したりと色々と方法があります。)

このように各要素にアクセスする方法がDOMによってルール付けされていないと、プログラムからHTMLを動的に変更したり、XMLで記述されたデータを読み込んだりといったことは、相当な困難を極めるでしょう。


4 ● RON
●22ポイント

言語中立については、多くの回答がありますので、DOMのメリットとよくない点について書きます。

DOMの前提は、「ドキュメント(データ)は構造化されている」にあります。本のように大見出し、中見出し、小見出し、本文にようになっていることを想定しています。いったん、DOMオブジェクトに読み込むと、大見出しの下に中見出しを追加したり、削除したりがイメージどおりにできます。データにタグをつけて、どのデータも同じような考え方で処理できる点は素晴らしいのです。従来のCSVファイルのようなレコードの順序に依存するよりは、はるかに高度なデータ表現ができます。従来、プログラムの論理でひとりひとりが開発していたことを標準化し、ラクになったと考えることができます。

しかし、DOMを利用した多くのプログラムでgetElementByTagNameが頻繁に使われているとおり、見出しを順々に降りていってテキストや属性をいじることは、とても煩雑なプログラミングとなります。とくに、特定のフィールドだけを書き換えたいなどという時に、構造体として扱うしか方法がないことは、メンドウにすぎます。ファイルとして読んだほうがラクじゃないか、でも言語中立でね、という要求に応えてできたのがSAXです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ