HTML5.JP

Ads

WHATWG - HTML5 Working Draft 日本語訳

2.4. DOMツリーアクセサー

一部、直訳ではなく意訳した部分がございます。原文と表現が異なることがございますので、ご了承ください。この日本語訳は、私が理解を深めるために、自分なりに日本語化したものです。本日本語訳には、翻訳上の誤りがある可能性があります。したがって、内容について一切保証をするものではありません。正確さを求める場合には、必ず原文を参照してください。当方は、この文書によって利用者が被るいかなる損害の責任を負いません。もし誤りなどを見つけたら、当サイトのお問い合わせより連絡いただければ幸いです。

概要

DOM ツリーにアクセスするための方法を規定した仕様です。W3C DOM ではさまざまな DOM アクセサーが規定されていますが、class 属性の値をキーにノードを取得する方法がありませんでした。HTML5 では、新たに getElementsByClassName メソッドが規定されています。

日本語訳

HTML 5

Working Draft — 8 November 2007

2.4. DOMツリーアクセサー

ドキュメントの html 要素 とは、ドキュメントのルート要素です。それが一つであれば html 要素ですが、そうでなければ null となります。

ドキュメントの head 要素とは、html 要素 の子要素である最初の head 要素です。それが一つであれば head 要素ですが、そうでなければ null となります。

ドキュメントの title 要素 とは、head 要素 の子要素である最初の title 要素です。それが一つであれば title 要素ですが、そうでなければ null となります。

title 属性は、取得においては、次のアルゴリズムを実行しなければいけません。

  1. ルート要素 が "http://www.w3.org/2000/svg" 名前空間の svg 要素で、ユーザーエージェントが SVG をサポートしているなら、ゲッターは、SVGDocument インタフェース上の同じ名前の DOM 属性によって返されたであろう値を返さなければいけません。

  2. そうでなければ、title 要素 の 子要素のすべての テキストノード のデータをツリー順で連結したものを返さなければいけません。もし title 要素 が null なら、空文字列となります。

セットする際には、次のアルゴリズムを実行しなければいけません。

  1. ルート要素 が "http://www.w3.org/2000/svg" 名前空間の svg 要素で、ユーザーエージェントが SVG をサポートしているなら、セッターは、SVGDocument インタフェースの同じ名前の DOM 属性用のセッターに従わなければいけません。この場合は、ここで、このアルゴリズムを停止します。

  2. head 要素が null なら、この属性は何もしてはいけません。この場合は、ここで、このアルゴリズムを停止します。
  3. title 要素 が null なら、新規の title 要素が生成され、head 要素に追加されなければいけません。
  4. title 要素 の子要素(もしあれば)は、すべて削除されなければいけません。
  5. データが指定された新たな値がデータとなる単一の Text ノードが、title 要素 に追加されなければいけません。

HTMLDocument インタフェースの title 属性は、ユーザーエージェントが HTML と SVG 双方をサポートしている場合、SVGDocument インタフェースの同じ名前の属性を追尾すべきです。

ドキュメントの body 要素 とは、html 要素の最初の子要素であり、body 要素または frameset 要素のどちらか一方となります。もし該当の要素がなければ、null となります。もし body 要素が null なら、イベントが "body 要素" で送出されることを仕様が要求するとき、それらは 代わりに Document オブジェクトで発出されなければいけません。

body 属性は、取得においては、ドキュメントの body 要素 を返さなければいけません(body 要素、frameset 要素、null のいずれか)。セットする際には、次のアルゴリズムが実行されなければいけません。

  1. もし新たな値が body または frameset 要素でなければ、HIERARCHY_REQUEST_ERR 例外を発出し、これらのステップを中止します。
  2. そうでなければ、もし新たな値が body 要素 と同じなら、何もしません。これらのステップを中止します。
  3. そうでなければ、もし body 要素 が null でなければ、新たな値と 現在の body 要素 をそれぞれ 2 つの引数としてルート要素の replaceChild() メソッドが呼び出されたかのように、DOM 内で、その要素を 新たな値で置き換えます。それからこれらのステップを中止します。
  4. そうでなければ、body 要素は null となります。新たな値をルート要素に追加します。

images 属性は、Document ノードに根付く HTMLCollection を返さなければいけません。このフィルターは img 要素だけに一致します。

links 属性は、Document ノードに根付く HTMLCollection を返さなければいけません。このフィルターは、href 属性を持つ a 要素と、href 属性を持つ area 要素だけに一致します。

forms 属性は、Document ノードに根付く HTMLCollection を返さなければいけません。このフィルターは form 要素だけに一致します。

anchors 属性は、Document ノードに根付く HTMLCollection を返さなければいけません。このフィルターはname 属性を持った a 要素だけに一致します。

getElementsByName(name) メソッドは、name 属性の値が引数 name に一致する、ドキュメント内のすべての a, applet, button, form, iframe, img, input, map, meta, object, select, textarea 要素が入った今現在の NodeList を返さなければいけません。

getElementsByClassName(classNames) メソッドは class を表す スペースで分割された重複がないトークンの非順序セット を含む文字列を引数にとります。このメソッドは、呼び出されたら、スペースで文字列を分割すること によって class を取得して、引数で指定された class すべてを持つドキュメント内のすべての要素を含んだ今現在の NodeList オブジェクトを返さなければいけません。 引数で指定されたトークンがない場合は、このメソッドは空の NodeList を返さなければいけません。

HTMLElement 上の getElementsByClassName() メソッドは、HTMLDocument getElementsByClassName() メソッドが同じ引数を渡したときに返すであろうノードを含んだ今現在の NodeList を返さなければいけません。ただし、そのメソッドの呼び出し元である HTMLElement の子要素でない要素を除きます。

HTML, SVG, MathML の要素は、それらがどの class にいるのかを定義します。それは、要素ごとの属性を、その要素が属している class のスペース分割リストを含んでいる 名前 class で振り分けることによって、定義されます。他の仕様は、それらの名前空間内の要素が、指定の class 内にあるとしてラベル付けされることも許しているかもしれません。UA は、どんな名前空間にある要素用の名前 class のすべての属性がこのように働くと仮定してはいけません。しかし、そのような属性が、グローバル属性として使われるとき、他の要素を指定の class にあるとしてラベル付けすると、仮定してはいけません。

次の XHTML の断片があるとします。

<div id="example">
 <p id="p1" class="aaa bbb"/>
 <p id="p2" class="aaa ccc"/>
 <p id="p3" class="bbb ccc"/>
</div>

document.getElementById('example').getElementsByClassName('aaa') を呼び出すと、XHTML 内の2つのパラグラフ p1p2 を含んだ NodeList が返されます。

getElementsByClassName('ccc bbb') を呼び出すと、一つのノードしか返されません。しかも、それは p3 です。document.getElementById('example').getElementsByClassName('bbb  ccc ') を呼び出しても結果は同じです。

getElementsByClassName('aaa,bbb') を呼び出すと、一つもノードは返りません。上記の要素には、class が "aaa,bbb" である要素が一つもありません。

HTMLDocument インタフェース上の dir 属性は、dir コンテント属性とともに定義されます。

サイト運営者情報 | プライバシーポリシー | 当サイトのご利用条件 | お問い合わせ | サイトマップ
Copyright © 2007-2011 Futomi Hatano (@futomi) All Rights Reserved.