|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
public interface Attr
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」も参照してください。
| フィールドの概要 |
|---|
| メソッドの概要 | |
|---|---|
String |
getName()
この属性の名前を返します。 |
Element |
getOwnerElement()
この属性の接続先である Element ノード。 |
TypeInfo |
getSchemaTypeInfo()
この属性に関連付けられている型情報。 |
boolean |
getSpecified()
インスタンスドキュメント内でこの属性の値が明示的に設定されている場合は true、そうでない場合は false。 |
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()
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 を返します。
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。