Attr インターフェイスは、 Element オブジェクト内の属性を表す。通常、属性に許可される値は、文書型定義内で定義される。
Attr オブジェクトは Node インターフェイスを継承するが、それらが説明する要素の実際の子ノードではないので、 DOM はこれを文書ツリーの一部とはみなさない。したがって、 Node のプロパティ parentNode, previousSibling, nextSibling は Attr オブジェクトについては値は null である。 DOM は、属性は関連付けられた要素から分離された独自性を持つのではなく、要素のプロパティであるとの見方を取る; これは、与えられた型の全要素に関連付けられたデフォルトの属性のような機能の実装を、より効率的にするだろう。更に、 Attr ノードは DocumentFragment の直接の子にはなれない。しかし、 DocumentFragment 内部に包含された Element ノードに関連付けられることは可能だ。つまり、利用者とDOM実装者は Attr ノードが Node インターフェイスを継承する他のオブジェクトとともに何かを持つが、それらは非常にはっきりしたものでもあることを知っている必要がある。
属性の実効値は、次のように決定される: この属性に明示的に値が割当てられていれば、その値が属性の実効値となる; そうでない場合、この属性についての宣言が存在し、その宣言がデフォルト値を持っていれば、そのデフォルト値が属性の実効値となる; さもなければ、属性は明示的に加えられることがない限り構造モデル内のこの要素上に存在しない。 Note that Attr インターフェイスの nodeValue プロパティは、属性の値の文字列版の取得に用いることもできる。
XML においては、属性の値は実体参照を含むことが可能で、 Attr ノードの子ノードは Text または EntityReference ノード (それが用いられている場合; 議論については EntityReference の説明を参照) でありうる。DOM Core は属性の型を検知しないので、全ての属性値を単純な文字列として扱う。DTDまたはスキーマが トークン化 型を持つと定義していたとしても無関係である。
nameDOMString型, 読取専用
ownerElementElement型, 読取専用
specifiedboolean型, 読取専用
true; そうでない場合は false。このプロパティを担当しているのは実装であり使用者ではないことに注意。使用者がこの属性の値を変更するならば (デフォルト値と同じ値をもって終了したとしても) specified フラグは自動的に true に変わる。DTDのデフォルト値に再指定するには、使用者はこの属性を削除しなければならない。すると実装は specified が false で(存在する場合は)デフォルト値を持つ新たな属性を作成するだろう。specified は true であり、値は割り振られた値である。specified は false であり、値はそのDTDのデフォルト値である。ownerElement プロパティが null (即ち生成されただけの状態か除去・複製の各種操作により null が設定された状態) であれば、 specified は true である。valueElement インターフェイスの getAttribute メソッドも参照。Text ノードを生成する。即ち、XMLプロセッサにマークアップと認識されるような文字も文字通りのテキストとして扱われる。 Element インターフェイスの setAttribute メソッドも参照。
interface Attr : Node {
readonly attribute DOMString name;
readonly attribute boolean specified;
attribute DOMString value;
// raises(DOMException) on setting
// Introduced in DOM Level 2:
readonly attribute Element ownerElement;
};