|
共通 DOM API | |||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
public interface Attr
Attrインタフェースは Elementオブジェクトの属性を表します。通常、属性に使用
できる値は、ドキュメントに関連付けられたスキーマで定義されます。
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 コアでは、ドキュメント宣言に関連付けられた 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 |
"x=5 y=6" |
"x=5 y=6" |
リテラル改行を含むエンティティ e |
<!ENTITY e '... ...'> [...]> "x=5&e;y=6" |
実装およびロードオプションにより異なる | 実装とロード/保存のオプションにより異 なる |
詳細は、「Document Object Model (DOM) Level 3 Core Specification」も参照してください。
| フィールドの概要 |
|---|
| メソッドの概要 | |
|---|---|
String |
getName()
この属性の名前を返します。 |
Element |
getOwnerElement()
この属性の接続先の Elementノード、この属性が使用されていない場合は null。 |
TypeInfo |
getSchemaTypeInfo()
この属性に関連付けられた型情報。 |
boolean |
getSpecified()
インスタンスドキュメントでこの属性に明示的に値が指定された場合は True。 |
String |
getValue()
取得時は、属性の値を文字列として返します。 |
boolean |
isId()
この属性が ID 型の (たとえば、所有者要素の識別子を含む) 属性であるかどうかを返します。 |
void |
setValue(String value)
取得時は、属性の値を文字列として返します。 |
| メソッドの詳細 |
|---|
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()
ownerElementは
Document.getElementByIdメソッドを使って取得できます。実装は、次の複数の方法を使って属性ノードが識別子を含むかどうかを判定できます。
Document.normalizeDocument()
の呼び出し中に XML スキーマ [XML Schema
Part 1] を使って検証が行われた場合、スキーマ検証後情報セット (PSVI) が提供する値を使ってこの属性が [XPointer]
の schema-determined
ID を使用しているスキーマ決定 ID 属性であるかどうかを判定する Document.normalizeDocument()
の呼び出し中に DTD を使って検証が行われた場合、情報セット [型定義] の値を使ってこの属性が [XPointer]
の
DTD-determined 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 を返します。
|
共通 DOM API | |||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||