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, 2014, Oracle and/or its affiliates. All rights reserved.