- すべてのスーパー・インタフェース:
Node
public interface Attr extends Node
Attr
インタフェースは、Element
オブジェクトの1つの属性を表現します。 通常、属性の許容値は文書に関連付けられたスキーマに定義されています。
Attr
オブジェクトはNode
インタフェースを継承しますが、実際には記述している要素の子ノードではないため、DOMでは文書ツリーの一部とは見なされません。 したがって、Node
の属性であるparentNode
、previousSibling
およびnextSibling
のAttr
オブジェクトの値はnull
になります。 DOMでは、属性は、それらが関連付けられている要素から独立した存在ではなく、こうした要素のプロパティであると見なされます。このような観点から、属性の機能は、所定の型を持つすべての要素に関連付けられたデフォルト属性として、一層効率的に実装されることになります。 さらに、Attr
ノードはDocumentFragment
の直接の子にはなれません。 ただし、これらをDocumentFragment
内に含まれるElement
ノードに関連付けることはできます。 つまり、ユーザーやDOMの実装者は、Attr
ノードがNode
インタフェースを継承するその他のオブジェクトといくつかの共通点は持っているが、これらはまた、まったく別物でもあることに注意する必要があります。
属性の実効値は次のように決定されます。属性になんらかの値が明示的に割り当てられていれば、その値が属性の実効値になります。属性の宣言が存在し、そこにデフォルト値が含まれていれば、そのデフォルト値が属性の実効値になります。それ以外の場合、構造モデルにおける現在の要素には属性が存在しません(明示的に追加する必要がある)。 Attr
インスタンス上のNode.nodeValue
属性はまた、属性の値の文字列バージョンを取得するためにも使用できます。
この属性の値がインスタンス文書内で明示的に割り当てられていないが、この文書に関連付けられたスキーマにデフォルト値が設定されている場合には、specified
がfalse
に設定された属性ノードが作成されます。 スキーマにデフォルト値が定義されている属性ノードを削除すると、specified
がfalse
に設定された、デフォルト値の新しい属性ノードが生成されます。 Document.normalizeDocument()
を呼び出しているときに検証が行われた場合には、specified
がfalse
である属性ノードは、スキーマに設定されているデフォルト属性値に基づいて再計算されます。 この属性のデフォルト値がスキーマに設定されていない場合には、属性ノードは破棄されます。
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<6" |
リテラル改行文字 |
"x=5 y=6" |
"x=5 y=6" |
"x=5 y=6" |
正規化された改行文字 |
"x=5 y=6" |
"x=5 y=6" |
"x=5 y=6" |
リテラル改行文字を含むエンティティe |
<!ENTITY e '... ...'> [...]> "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
、それ以外の場合は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
。- 導入されたバージョン:
- 1.4、DOMレベル2
-
getSchemaTypeInfo
TypeInfo getSchemaTypeInfo()この属性に関連付けられている型情報。 この属性に含まれている型情報は、文書のロードやDocument.normalizeDocument()
の呼出しのあとも正しいことが保証されますが、ノードが移動された場合はschemaTypeInfo
が信頼できない可能性があります。- 導入されたバージョン:
- 1.5、DOMレベル3
-
isId
boolean isId()この属性が型IDとして認識されている(所有者要素の識別子を含んでいる)かどうかを返します。 これが型IDであり、その値が一意である場合は、Document.getElementById
メソッドを使用してこの属性のownerElement
を取得できます。 この実装は、いくつかの方法を使用して、属性ノードが識別子を含んでいると認識されているかどうかを判定します。- 文書をロードしているときまたは
Document.normalizeDocument()
を呼び出しているときに、XMLスキーマ「XML Schema Part 1」を使用して検証が行われた場合には、スキーマ検証後情報セット・コントリビューション(PSVIコントリビューション)値を使用して、この属性が「XPointer」のスキーマ決定ID定義を使用するスキーマ決定ID属性であるかどうかを判断します。 - 文書をロードしているときまたは
Document.normalizeDocument()
を呼び出しているときに、DTDを使用して検証が行われた場合には、情報セット「型定義」の値を使用して、この属性が「XPointer」のDTD決定ID定義を使用するDTD決定ID属性であるかどうかを判断します。 -
Element.setIdAttribute()
、Element.setIdAttributeNS()
、またはElement.setIdAttributeNode()
メソッドが使用されている場合には、ユーザー決定ID属性であると判断します。注: XPointerフレームワーク(「XPointer」のセクション3.2を参照)では、DOMユーザー決定ID属性がXPointer外部決定ID定義の一部と見なされます。
- この仕様の範囲に含まれないメカニズムを使用して、外部決定ID属性であると判断します。 たとえば、XMLスキーマとDTD以外のスキーマ言語を使用します。
Document.normalizeDocument()
を呼び出しているときに検証が行われた場合には、すべてのユーザー決定ID属性がリセットされ、使用しているスキーマに基づいてすべての属性ノードID情報が再評価されます。 この結果、Attr.schemaTypeInfo
属性にID型が含まれる場合には、isId
は常にtrueを返します。- 導入されたバージョン:
- 1.5、DOMレベル3
- 文書をロードしているときまたは
-