共通 DOM API

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

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

public interface Attr
extends Node

Attrインタフェースは Elementオブジェクトの属性を表します。通常、属性に使用 できる値は、ドキュメントに関連付けられたスキーマで定義されます。

Attr オブジェクトは Node インタフェースを継承します。ただし、これらは記述する要素の実際の子ノードではないので、DOM はこれらをドキュメントツリーの一部と見なしません。このため、Node 属性の parentNodepreviousSiblingnextSibling は、Attr オブジェクトに対して値 null を持ちます。DOM は、属性が関連付けられた要素から独立した識別情報を持つものではなく、要素のプロパティであると見なします。このことにより、特定タイプのすべての要素 に関連付けられたデフォルトの属性などの機能をより効率的に実装できるようになります。その上、Attr ノードは DocumentFragment の直下の子にはなりません。ただし、これらは DocumentFragment に含まれる Element ノードに関連付けることができます。要約すると、DOM のユーザと実装者は Attr ノードが Node インタフェースを継承する別のオブジェクトと共通性があることを意識する必要がありますが、これらはまったく別個のものであることも注意する必要があると いうことです。

属性の有効な値は次のように決まります。属性に何らかの値が明示的に割り当てられている場合、その値がこの属性の有効な値です。そうでない場合 は、属性に対する宣言があり、その宣言にデフォルトの値がある場合は、そのデフォルトの値が属性の有効な値です。もしそうでなければ、明示的に追加される まで、属性はその構造モデルの要素には存在しないことになります。Attr インスタンスの Node.nodeValue 属性は、属性の値の文字列版を取得するためにも使用できることに注意してください。

インスタンスドキュメントで属性に明示的に値が指定されなかったが、ドキュメントに関連付けられたスキーマがデフォルト値を指定する場合、属性ノードは specifiedfalse に設定して作成されます。デフォルト値がスキーマで定義されている属性ノードを削除すると、デフォルト値を含み、かつ specifiedfalse に設定された新規属性ノードが生成されます。Document.normalizeDocument() を呼び出し中に検証が発生すると、スキーマで指定されたデフォルトの属性値に従って specifiedfalse である属性ノードが再計算されます。この属性に関連付けられたデフォルト値がスキーマにない場合、属性ノードは破棄されます。

XML で属性の値が実体参照を含むことができる場合、Attr ノードの子ノードは Text または EntityReference ノードのいずれかになります (これらが使用される場合については、EntityReference の説明を参照)。

DOM コアでは、ドキュメント宣言に関連付けられた 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ノード、この属性が使用されていない場合は null
 TypeInfo getSchemaTypeInfo()
          この属性に関連付けられた型情報。
 boolean getSpecified()
          インスタンスドキュメントでこの属性に明示的に値が指定された場合は True
 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.localNamenullではない場合、この属性は修飾名です。


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 型の (たとえば、所有者要素の識別子を含む) 属性であるかどうかを返します。この属性とその値が一意の場合、この属性の ownerElementDocument.getElementByIdメソッドを使って取得できます。実装は、次の複数の方法を使って属性ノードが識別子を含むかどうかを判定できます。
Document.normalizeDocument()を呼び出し中に検証が行われた場合、すべてのユーザ決定 ID 属性はリセットされ、使用されているスキーマに従ってすべての属性ノードの ID 情報が再評価されます。その結果、Attr.schemaTypeInfo属 性が ID 型を含む場合、isIdは常に true を返します。

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

共通 DOM API

バグや機能要求の報告
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 2004 Sun Microsystems, Inc. 4150 Network Circle
Santa Clara, California, 95054, U.S.A. All Rights Reserved.