JavaTM Platform
Standard Ed. 6

org.w3c.dom
インタフェース Attr

すべてのスーパーインタフェース:
Node

public interface Attr
extends Node

Attr インタフェースは、Element オブジェクトの 1 つの属性を表現します。通常、属性の許容値は文書に関連付けられたスキーマに定義されています。

Attr オブジェクトは Node インタフェースを継承していますが、自身が記述する要素の子ノードにはなっていません。 このため、DOM では、文書ツリーの一部とは見なされません。したがって Node 属性である parentNodepreviousSiblingnextSiblingAttr オブジェクトの値は null になります。DOM では、属性は、それらが関連付けられている要素から独立した存在ではなく、こうした要素のプロパティーであると見なされます。 このような観点から、属性の機能は、所定の型を持つすべての要素に関連付けられたデフォルト属性として、いっそう効率的に実装されることになります。また、Attr ノードは DocumentFragment の直接の子ノードにはならないものの、DocumentFragment 内の Element ノードに関連付けることが可能です。ユーザーと DOM の実装者は、Attr ノードが Node インタフェースを継承するその他のオブジェクトと共通点を持っているだけであって、それらとはまったく別物であることに注意する必要があります。

次に、属性の実効値の特定方法について説明します。属性に何らかの値が明示的に割り当てられていれば、その値が属性の実効値になります。属性の宣言が存在し、そこにデフォルト値が含まれていれば、そのデフォルト値が属性の実効値になります。 それ以外の場合、構造モデルにおける現在の要素には属性が存在しません (明示的に追加する必要がある)Attr インスタンス上の Node.nodeValue 属性を使って、属性の値に相当する文字列を取得することもできます。

この属性の値がインスタンス文書内で明示的に割り当てられていないが、この文書に関連付けられたスキーマにデフォルト値が設定されている場合には、specifiedfalse に設定された属性ノードが作成されます。スキーマにデフォルト値が定義されている属性ノードを削除すると、specifiedfalse に設定された、デフォルト値の新しい属性ノードが生成されます。Document.normalizeDocument() を呼び出しているときに検証が行われた場合には、specifiedfalse である属性ノードは、スキーマに設定されているデフォルト属性値に基づいて再計算されます。この属性のデフォルト値がスキーマに設定されていない場合には、属性ノードは破棄されます。

XML では、属性値にエンティティー参照が含まれている場合に、Attr ノードの子ノードが Text ノードまたは EntityReference ノードになります。 これらを使用している場合は、EntityReference の説明を参照してください。

DOM Core では、文書に関連付けられている DTD またはスキーマで属性値がトークン型などの型として宣言されている場合でも、すべての属性値が文字列として表現されます。

DOM 実装がどのように属性値を正規化するかは、使用しているスキーマを実装がどの程度認識しているかによって異なります。一般に、Attr ノードの value 属性と nodeValue 属性は、パーサーから渡された正規化された値を最初に返します。また、Document.normalizeDocument() が呼び出されたあとにも、正規化が実行されます (正しいオプションが設定されている場合)。ただし、変異が実行されたあと、つまり、文字列値を直接設定するか Attr の子ノードを変更することによって変異が実行された場合には、正規化が実行されないことがあります。特に、文字参照が行われている場合 (文字参照が DOM 内で表現されず、属性値の正規化に影響する場合) には、正規化は実行されません。一方、属性値が変更されたときに使用しているスキーマを実装が認識していて、その属性値が CDATA 以外の場合には、実装は再度属性値を正規化します。特に、SVG DOM 実装 (文字列とは異なる内部形式で属性値を格納する) などの特殊な DOM 実装の場合には、正規化を再度実行します。

次の表は、元の文書に含まれる属性値 (解析された属性)、DOM に表示された値、および直列化された値の関係についての例を示しています。

解析された属性値 初期 Attr.value 直列化された属性値
文字参照
「x²=5」
「x?=5」
「x²=5」
組み込み文字エンティティー
「y<6」
「y<6」
「y&lt;6」
リテラル改行文字
 「x=5&#10;y=6」
「x=5 y=6」
「x=5&#10;y=6」
正規化された改行文字
「x=5 y=6」
「x=5 y=6」
「x=5 y=6」
リテラル改行文字を含むエンティティー e
 <!ENTITY e '...&#10;...'>[...]> 「x=5&e;y=6」
実装とロードオプションに応じて異なる 実装とロード/保存オプションに応じて異なる

「Document Object Model (DOM) Level 3 Core Specification」を参照してください。


フィールドの概要
 
インタフェース org.w3c.dom.Node から継承されたフィールド
ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
 
メソッドの概要
 String getName()
          この属性の名前を返します。
 Element getOwnerElement()
          この属性の接続先である Element ノード。
 TypeInfo getSchemaTypeInfo()
          この属性に関連付けられている型情報。
 boolean getSpecified()
          インスタンスドキュメント内でこの属性の値が明示的に設定されている場合は true、そうでない場合は false
 String getValue()
          取得時、属性値は文字列として返されます。
 boolean isId()
          この属性が型 ID として認識されている (所有者要素の識別子を含んでいる) かどうかを返します。
 void setValue(String value)
          取得時、属性値は文字列として返されます。
 
インタフェース org.w3c.dom.Node から継承されたメソッド
appendChild, cloneNode, compareDocumentPosition, getAttributes, getBaseURI, getChildNodes, getFeature, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, getTextContent, getUserData, hasAttributes, hasChildNodes, insertBefore, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, removeChild, replaceChild, setNodeValue, setPrefix, setTextContent, setUserData
 

メソッドの詳細

getName

String getName()
この属性の名前を返します。Node.localName が null 以外の場合、この属性は修飾名です。


getSpecified

boolean getSpecified()
インスタンスドキュメント内でこの属性の値が明示的に設定されている場合は true、そうでない場合は false。デフォルト値と同じ値になる場合を含めて、アプリケーションがこの属性ノードの値を変更した場合は、true に設定されます。この実装はほかのスキーマからデフォルト値の属性を同様に処理することもありますが、アプリケーションは Document.normalizeDocument() を使用してこの情報を更新する必要があります。


getValue

String getValue()
取得時、属性値は文字列として返されます。文字および一般的なエンティティー参照はこれらの値に置き換えられます。Element インタフェースの getAttribute メソッドも参照してください。
設定時、未解析の文字列コンテンツを持つ Text ノードを作成します。 つまり、XML プロセッサによってマークアップとして認識されるすべての文字は、リテラルテキストとして取り扱われます。Element.setAttribute() メソッドも参照してください。
「SVG 1.1」実装などの一部の実装では、変更後にも自動的に正規化が行われることがあります。 このような場合には、取得時の値が設定時の値と一致しないことがあります。


setValue

void setValue(String value)
              throws DOMException
取得時、属性値は文字列として返されます。文字および一般的なエンティティー参照はこれらの値に置き換えられます。Element インタフェースの getAttribute メソッドも参照してください。
設定時、未解析の文字列コンテンツを持つ Text ノードを作成します。 つまり、XML プロセッサによってマークアップとして認識されるすべての文字は、リテラルテキストとして取り扱われます。Element.setAttribute() メソッドも参照してください。
「SVG 1.1」実装などの一部の実装では、変更後にも自動的に正規化が行われることがあります。 このような場合には、取得時の値が設定時の値と一致しないことがあります。

例外:
DOMException - NO_MODIFICATION_ALLOWED_ERR:ノードが読み取り専用の場合

getOwnerElement

Element getOwnerElement()
この属性の接続先である Element ノード。この属性が使用されていない場合は null

導入されたバージョン:
DOM Level 2

getSchemaTypeInfo

TypeInfo getSchemaTypeInfo()
この属性に関連付けられている型情報。この属性に含まれる型情報は、文書をロードしたあと、または Document.normalizeDocument() を呼び出したあとでも保証されます。 ただし、ノードが移動された場合には、schemaTypeInfo の型情報が保証されないことがあります。

導入されたバージョン:
DOM Level 3

isId

boolean isId()
この属性が型 ID として認識されている (所有者要素の識別子を含んでいる) かどうかを返します。この属性が型 ID として認識され、属性値が一意のときには、Document.getElementById メソッドを使用してこの属性の ownerElement を取得できます。この実装は、いくつかの方法を使用して、属性ノードが識別子を含んでいると認識されているかどうかを判定します。
Document.normalizeDocument() を呼び出しているときに検証が行われた場合には、すべてのユーザー決定 ID 属性がリセットされ、使用しているスキーマに基づいてすべての属性ノード ID 情報が再評価されます。この結果、Attr.schemaTypeInfo 属性に ID 型が含まれる場合には、isId は常に true を返します。

導入されたバージョン:
DOM Level 3

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。