本セクションは DOM Level 2 Core API [DOM Level 2 Core] を拡張し、 HTML 文書 [HTML 4.01], 及び XHTML 文書 [XHTML 1.0] に特有のオブジェクトまたメソッドについて記述する。一般に, 階層的な文書構造, 要素, 属性の操作に必要な機能は, コアセクション中で見られる; HTML で定義される特有の要素に依存する機能は, 本セクションに見ることができる。
HTML 特有の DOM API の目標は:
コア DOM と DOM の HTML 適用との重要な差異は, HTML Document Object Model が多くの 簡便 メソッドとプロパティを見せ, これらが既存のモデルと両立し, またスクリプト著者に対してよりふさわしい点である。多くの場合, こうした増強は定義済み DTD の存在に依存するため一般的な DOM には適用できない。 HTML4.01 の transitional または frameset DTD, また XHTML 1.0 の DTD が想定される。実装間の相互運用性は, HTML4.01 および XHTML1.0 の DTD に規定された要素と属性のみが保証される。
とりわけ, 本文書は HTML の為の次の特化を含む:
Document
インターフェイスより派生する HTMLDocument
は, HTML 文書上での操作と問い合わせを規定する。Element
インターフェイスより派生する HTMLElement
上のメソッドは, HTML 要素の全てに適用する属性の検索と修正を許可するものを含む。HTMLElement
インターフェイスで規定されるものを拡張する属性を持つ全 HTML 要素の特化。そういう全属性のために, 要素の派生インターフェイスは、値の設定また取得のための明白なメソッドを含む。DOM Level 2 は, CSS を通して指定されるスタイルにアクセス・修正するメカニズムを含み, そして HTML 文書で使用されうるイベントモデルを定義する。
本セクション内に見られるインターフェイスは強制的なものではない。 DOM アプリケーションは, 実装がこのモジュールをサポートしているかどうかの判定に, パラメータ値 "HTML" と "2.0" を(それぞれ)ともなう DOMImplementation
インターフェイスの hasFeature(feature, version)
メソッドを使ってよい。 feature 文字列 "HTML" に加え, 実装が XHTML をサポートしているならば feature 文字列 "XHTML" (バージョン文字列 "2.0") がチェックに使用されうる (これは feature "XML" と "HTML" のチェックと透過である)。このモジュールの完全なサポートのためには、実装は [DOM Level 2 Core] で定義される "Core" feature もサポートしなければならない。 DOM Level 2 Core 仕様 [DOM Level 2 Core] における 適合 については追加情報を参照。
DOM アプリケーションは、サポートされているかどうかの判定に DOMInplementation
インターフェイスの hasFeature
メソッドを使ってよい。本セクションに列挙されるインターフェイス全ての為の feature 文字列は, "HTML" であり, バージョンは "2.0" である。 この feature の完全なサポートの為に, 実装は Document Object Model Level 2 Core [DOM Level 2 Core] で定義される "Core" feature のサポートも必要とする (適合 も参照)。
本仕様内のインターフェイスは [HTML 4.01] 文書, および [XHTML 1.0] 文書のために設計されている。
Note: 本仕様は、 HTMLFrameSetElement
,
HTMLIFrameElement
,
HTMLImageElement
,
HTMLLinkElement
,
HTMLObjectElement
,
HTMLParamElement
,
HTMLScriptElement
のような、直接的または間接的に外部データを参照する要素上の属性の変更に際してのユーザーエージェントの反応の厳密な定義を意図しない。
HTML DOM は, プロパティ, メソッド, イベント, コレクション, データ型の命名慣習に従う。名前は全て1文字列の形式に連結された 1 個以上の英単語で定義される。
プロパティ名及びメソッド名は、先頭キーワードは小文字で始まり, 後続の語は大文字で始まる。例えば、ファイルの作成日のような文書のメタ情報を返すプロパティは、 "fileDateCreated" になるだろう。 ECMAScript バインディングにおいては, プロパティは、与えられたオブジェクトのプロパティとして露出する。 Java では, プロパティは get 及び set を伴うメソッドに露出する。
後に定義するインターフェイスの多くが HTML 4.01 勧告で定義された要素に直接マップ可能である一方, そうでないものもいくつかある。同様に, 挙げられているアトリビュートの全てに, それぞれ相当する HTML 4.01 仕様があるわけではない (相当する仕様があっても, スクリプティング言語との干渉を避けるために名前を変えているものもある)。HTML4.0 仕様 にリンクしているインターフェイスとアトリビュートの定義は、そちらに該当する要素また属性定義を持つ; 本仕様で追加される他のものは全て, 簡便性または DOM Level 0 実装との後方互換のいずれかのためのものである。
DOM HTML レベル1 API [DOM Level 1] は、HTML 4.01 文書 [HTML 4.01] のみについての使用を意図していた。その API は XHTML 1.0 [XHTML 1.0] が仕様化される前、また HTML ワーキンググループがその策定作業を開始する前に定義されたものであった。
DOM の観点で言うと、HTML 4.01 (及びそれ以前) と XHTML 1.0 の最大の違いは、HTML 4.01 が文字ケースを区別しないのに対して XHTML はこれを区別する点である。HTML の文字ケース無視は DOM HTML API にも反映する。例えば、要素と属性の名前は、HTML文書上で用いられる場合、マークアップで使用される文字ケースとは関係なく(一貫して)全て大文字で展開される。XHTMLはXMLに基づいているため、XHTMLでは全てが文字ケースを区別され、要素と属性の名前は小文字でマークアップされなければならない。
HTML, XHTML 両文書で動くコードを書くならば、開発者は2つのことに留意する必要がある。要素名・属性名の文字列比較では、比較において文字ケースを無視させるか、要素名・属性名を比較前に小文字に変換する必要がある。第2に、HTML文書上で文字ケースを無視するメソッド(getElementsByTagName()
, namedItem()
など)を呼ぶとき、渡す文字列は小文字にするべきである。
Note: 本文書で提供されるインターフェイスは [HTML 4.01] と [XHTML 1.0] 文書だけが対象であり、将来のバージョンの XHTML での動作を保証するものではない。
HTML 属性は、要素オブジェクト上にプロパティとして表れる。 DOM 命名慣習は常に、表れるプロパティ名を判定し、ソース文書内の属性の文字ケースから独立させる。プロパティのデータ型は一般に、 HTML 4.01 (transitional と frameset) 及び XHTML 1.0 の DTD によって決定されるような属性の型によって決定される。属性は、 [HTML 4.01] 及び [XHTML 1.0] 仕様で与えられる(文字ケースを含めた)意味論を持つ。
属性は DOM Level 0 との互換性のためにプロパティとして現れる。 XML の可能な属性名全てに一般化することが出来ないため、この用法は推奨しない。属性の設定, 取得, 除去には, コア Element
インターフェイス上の汎用メソッドの仕様を推奨する。
DTDデータ型 | オブジェクトモデルデータ 型 |
---|---|
CDATA | DOMString |
値リスト (例, (left | right | center)) | DOMString |
一値の値リスト (例, (disabled)) | boolean |
数 | long int |
HTML 文書では、データ型が値リストであるアトリビュートの戻り値は小文字に正規化される(ソース文書内の値の文字ケースから独立している)。
例えば, P 要素上の align 属性の値が "Left" (XHTML の場合は文字ケースを区別するためこれは妥当な値ではない) であれば、その値は "left" を返す。CDATA
型の属性については, 戻り値の文字ケースはソース文書で与えられるとおりである。
未指定でかつ規定値を持たない属性の戻り値は、戻り値型が DOMString の場合は空文字列, ブーリアン値の場合は false, 数値の場合は 0 である。
ネームスペースの競合を避けるため, 選択した バインディング言語 の一方のキーワードと同名である2個のアトリビュートは接頭語をつける。 LABEL
要素と SCRIPT
要素の for
属性はループ構成概念の命名慣習とぶつかるため htmlFor
と名前を変える。 HTML 要素の class
属性はクラス定義の命名慣習とぶつかるため className
と名前を変える。
tagName
, (nodeName
))文書が HTML 4.01 文書である場合、プロパティに現れる要素型名は大文字である。例えば、 body 要素型名は tagName
プロパティに BODY
として出現する。文書が XHTML 1.0 文書であるなら、要素名は XHTML ファイルに書かれた通りに現れる。これは、 XHTML 1.0 の DTD が要素型を小文字で定義しており、 XML に由来する XHTML では文字ケースを区別することから、 XHTML 文書については要素型名が小文字で出現することを意味する。