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」も参照してください。
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)
取得時、属性値は文字列として返されます。
|
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
String getName()
Node.localName
が null
以外の場合、この属性は修飾名です。boolean getSpecified()
True
、それ以外の場合は false
。アプリケーションがこの属性ノードの値を変更した場合は (最終的にデフォルト値と同じ値になった場合でも)、true
に設定されます。実装では、ほかのスキーマからのデフォルト値で属性が同様に処理される可能性がありますが、アプリケーションは Document.normalizeDocument()
を使用してこの情報を更新する必要があります。String getValue()
Element
インタフェースの getAttribute
メソッドも参照してください。Text
ノードを作成します。つまり、XML プロセッサによってマークアップとして認識されるすべての文字は、リテラルテキストとして取り扱われます。Element.setAttribute()
メソッドも参照してください。void setValue(String value) throws DOMException
Element
インタフェースの getAttribute
メソッドも参照してください。Text
ノードを作成します。つまり、XML プロセッサによってマークアップとして認識されるすべての文字は、リテラルテキストとして取り扱われます。Element.setAttribute()
メソッドも参照してください。DOMException
- NO_MODIFICATION_ALLOWED_ERR:ノードが読み取り専用の場合に発生します。Element getOwnerElement()
Element
ノード。この属性が使用されていない場合は null
。TypeInfo getSchemaTypeInfo()
Document.normalizeDocument()
の呼び出しのあとも正しいことが保証されますが、ノードが移動された場合は schemaTypeInfo
が信頼できない可能性があります。boolean isId()
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 定義の一部と見なされます。
Document.normalizeDocument()
を呼び出しているときに検証が行われた場合には、すべてのユーザー決定 ID 属性がリセットされ、使用しているスキーマに基づいてすべての属性ノード ID 情報が再評価されます。この結果、Attr.schemaTypeInfo
属性に ID 型が含まれる場合には、isId
は常に true を返します。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.