ドキュメントオブジェクトモデル

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
ドキュメントオブジェクトモデル
DOM-model.svg
HTMLドキュメントのDOM階層の例
略語DOM
初版1998年10月1日; 23年前 (1998-10-01
最新バージョンDOM4 [1]
2015年11月19日; 6年前 (2015-11-19
組織World Wide Web ConsortiumWHATWG
基本基準WHATWGDOMリビングスタンダード
W3CDOM4

ドキュメントオブジェクトモデルDOM)は、クロスプラットフォーム言語に依存しないインターフェイスであり、XMLまたはHTMLドキュメントをツリー構造として扱います。ノード、ドキュメントの一部を表すオブジェクトです。 DOMは、論理ツリーを使用してドキュメントを表します。ツリーの各ブランチはノードで終わり、各ノードにはオブジェクトが含まれています。 DOMメソッドを使用すると、プログラムでツリーにアクセスできます。それらを使用すると、ドキュメントの構造、スタイル、またはコンテンツを変更できます。ノードには、イベントハンドラーをアタッチできます。イベントがトリガーされると、イベントハンドラーが実行されます。[2]

DOMの主要な標準化は、2004年に最後に推奨事項を作成しWorld Wide Web Consortium(W3C)によって処理されました。WHATWGが標準の開発を引き継ぎ、生きたドキュメントとして公開しましたW3Cは、WHATWG標準の安定したスナップショットを公開するようになりました。

歴史

ドキュメントオブジェクトモデルの歴史は「の歴史と絡み合っているブラウザ戦争との間に、1990年代後半の」ネットスケープナビゲーターMicrosoft Internet Explorerのと同様のものとはJavaScriptJScriptの、最初のスクリプト言語で広く実装されますJavaScriptエンジンWebブラウザ

JavaScriptは、1995年にNetscape Navigator2.0内でNetscapeCommunicationsによってリリースされまし。 NetscapeのライバルであるMicrosoftは、翌年、JScriptと呼ばれるJavaScriptを再実装したInternet Explorer3.0をリリースしました。 JavaScriptとJScriptを使用すると、Web開発者はクライアント側の双方向性を備えたWebページを作成できます。ユーザーが生成したイベントを検出し、これらの言語の第1世代でHTMLドキュメントを変更するための限られた機能は、最終的に「DOMレベル0」または「レガシーDOM」として知られるようになりました。 DOMレベル0の独立した標準は開発されていませんが、HTML4の仕様に部分的に記述されています。

従来のDOMは、アクセスできる要素の種類が制限されていましたフォームリンク、および画像の要素は、ルートドキュメントオブジェクトで始まる階層名で参照できます。階層名は、トラバースされた要素の名前またはシーケンシャルインデックスのいずれかを利用できます。たとえば、フォーム入力要素には、document.formName.inputNameまたはのいずれかとしてアクセスできますdocument.forms[0].elements[0]

レガシーDOMにより、クライアント側のフォーム検証と、ツールチップの作成などの単純なインターフェイスの双方向性が可能になりました

1997年、NetscapeとMicrosoftはそれぞれバージョン4.0のNetscapeNavigatorとInternetExplorerをリリースし、ロードされたHTMLドキュメントへの変更を可能にするダイナミックHTML(DHTML)機能のサポートを追加しました。DHTMLには、レガシーDOM実装で利用可能な基本的なドキュメントオブジェクトへの拡張が必要でした。JScriptはJavaScriptに基づいていたため、レガシーDOMの実装はほぼ互換性がありましたが、DHTML DOM拡張機能は各ブラウザーメーカーによって並行して開発され、互換性がありませんでした。これらのバージョンのDOMは、「中間DOM」として知られるようになりました。

標準化後のECMAScriptW3C DOMワーキンググループは、標準のDOMの仕様を策定し始めました。「DOMレベル1」として知られる完成した仕様は、1998年後半にW3C勧告になりました。2005年までに、W3C DOMの大部分は、Microsoft Internet Explorerバージョン6(2001年以降)を含む一般的なECMAScript対応ブラウザによって十分にサポートされましたOperaSafariGeckoベースのブラウザ(MozillaFirefoxSeaMonkeyCaminoなど)。

標準

WHATWG DOM

W3C DOMワーキンググループは、その最終勧告を公表し、その後に移行し、2004年の開発努力に解散WHATWG生活水準を維持し続け、。[3] 2009年、WebアプリケーショングループはW3CでのDOMアクティビティを再編成しました。[4] 2013年に、進歩の欠如とHTML5の差し迫ったリリースのために、DOMレベル4仕様がHTMLワーキンググループに再割り当てされ、その完了を促進しました。[5]一方、2015年に、Webアプリケーショングループは解散し、DOMスチュワードシップはWebプラットフォームグループに渡されました。[6]2015年のDOMレベル4の公開以降、W3CはWHATWG標準のスナップショットに基づいて新しい推奨事項を作成します。

  • DOMレベル1は、ドキュメントの任意の部分を変更する手段を含む、HTMLまたはXMLドキュメント全体の完全なモデルを提供しました
  • DOMレベル2は、2000年後半に公開されました。これにより、getElementById関数、イベントモデル、およびXML名前空間とCSSのサポートが導入されました
  • 2004年4月に公開されたDOMレベル3では、XPathとキーボードイベント処理のサポート、およびドキュメントをXMLとしてシリアルするためのインターフェイスが追加されました
  • DOMレベル4は2015年に公開されました。これは、WHATWGの生活水準のスナップショットです。[7]

アプリケーション

Webブラウザ

HTMLページなどのドキュメントレンダリングするために、ほとんどのWebブラウザはDOMと同様の内部モデルを使用しますすべてのドキュメントのノードはDOMツリーと呼ばれるツリー構造編成され、最上位のノードは「ドキュメントオブジェクト」と呼ばれます。HTMLページがブラウザでレンダリングされると、ブラウザはHTMLをローカルメモリにダウンロードし、自動的に解析してページを画面に表示します。ただし、DOMは必ずしもツリーとして表す必要はなく[8]、一部のブラウザは他の内部モデルを使用しています。[9]

JavaScript

Webページが読み込まれると、ブラウザはページのドキュメントオブジェクトモデルを作成します。これは、JavaScriptとドキュメント自体の間のインターフェイスとして機能するHTMLドキュメントのオブジェクト指向表現です。これにより、動的なWebページの作成が可能になります[10]。これは、ページ内でJavaScriptが次のことができるためです。

  • HTML要素と属性のいずれかを追加、変更、および削除します
  • CSSスタイルのいずれかを変更します
  • 既存のすべてのイベントに反応する
  • 新しいイベントを作成する

実装

DOMは任意の方向(親や前の兄弟など)のナビゲーションをサポートし、任意の変更を許可するため、実装では少なくともこれまでに読み取られたドキュメント(またはその解析形式)をバッファリングする必要があります。[11]

レイアウトエンジン

Webブラウザーは、HTMLをDOMに解析するためにレイアウトエンジン依存しています。Trident / MSHTMLなどの一部のレイアウトエンジンは、主にまたは排他的にInternetExplorerなどの特定のブラウザに関連付けられています。BlinkWebKitGeckoなどの他のブラウザは、Google ChromeOperaSafariFirefoxなどの多くのブラウザで共有されていますさまざまなレイアウトエンジンが、さまざまなコンプライアンスの程度でDOM標準を実装します。

ライブラリ

DOMの実装:

  • libxml2
  • MSXML
  • Xercesは、C ++、Java、およびPerlで記述されたDOM実装のコレクションです。
  • Python用のxml.dom
  • <SCRIPT>のXMLは、JavaScriptベースのDOM実装です[12]
  • PHP.Gt DOMは、 libxml2に基づくサーバー側のDOM実装でありPHPプログラミング言語にDOMレベル4の互換性[13]をもたらします。
  • Dominoは、Mozillaのdom.jsに基づくサーバー側(Node.js)のDOM実装です。ドミノは、ビジュアルエディターのMediaWikiスタックで使用されます。
  • SimpleHtmlDomは、C#の単純なHTMLドキュメントオブジェクトモデルであり、プログラムでHTML文字列を生成できます。

DOM実装を公開するAPI:

  • JAXP(Java API for XML Processing)は、DOMプロバイダーにアクセスするためのAPIです。
  • LazarusFree Pascal IDE)には、UTF-8およびANSI形式のDOMの2つのバリアントが含まれています

検査ツール:

も参照してください

参考文献

  1. ^ すべてのバージョン管理はW3CDOMのみを参照します。
  2. ^ 「ドキュメントオブジェクトモデル(DOM)」W3C 2012年1月12日取得ドキュメントオブジェクトモデルは、プラットフォームと言語に依存しないインターフェイスであり、プログラムとスクリプトがドキュメントのコンテンツ、構造、スタイルに動的にアクセスして更新できるようにします。
  3. ^ 「DOM標準」取得した23年9月2016
  4. ^ 「W3Cドキュメントオブジェクトモデル」取得した23年9月2016
  5. ^ [email protected])、Philippe LeHegaret。「2013年9月30日のPhilippeLe HegaretによるHTMLワーキンググループの新しい憲章(2013年9月からの[email protected])」取得した23年9月2016
  6. ^ "PubStatus-WEBAPPS" 取得した23年9月2016
  7. ^ 「W3CDOM4」2021年1月8日取得
  8. ^ 「ドキュメントオブジェクトモデルとは何ですか?」W3C 2021912日取得ただし、DOMは、ドキュメントをツリーまたはグローブとして実装する必要があることを指定していません。また、オブジェクト間の関係を実装する方法も指定していません。DOMは、任意の便利な方法で実装できる論理モデルです。
  9. ^ 「MicrosoftEdgeでのDOMツリーの最新化」マイクロソフト。2017年4月19日2021912日取得
  10. ^ 「JavaScriptHTMLDOM」取得した23年9月2016
  11. ^ Kogent Solutions Inc.(2008)。Ajax Black Book、新版(Cd付き)ドリームテックプレス。p。40. ISBN 978-8177228380
  12. ^ 「JavaScriptの<SCRIPT>クロスプラットフォームXMLパーサーのXML」取得した23年9月2016
  13. ^ 「PHP7プロジェクト用の最新のDOMAPI」2021年12月5日。

一般的な参考文献

外部リンク