|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
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 Core 表示作為簡單字元串的所有屬性值,即使與文檔相關聯的 DTD 或網要宣告它們是某個特定型別(如 tokenized)。
由 DOM 實作執行的屬性值規範化的方式取決於該實作對使用的網要的瞭解程度。通常,Attr 節點的 value 和 nodeValue 屬性最初返回由解析器給定的標準化值。調用 Document.normalizeDocument() 之後的情況也是這樣(假定設置了正確的選項)。但變化後可能不是這樣,與是通過直接設置字元串值還是通過更改 Attr 子節點執行變化無關。特別是,當涉及 character references 時、給出那些不在 DOM 中表示的和影響屬性值標準化的時是這種情況,另一方面,如果該實作知道更改屬性值時使用的網要,且它與 CDATA 屬於不同的型別,則它可以在該時再一次對其執行標準化。對於特殊的 DOM 實作(如 SVG 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 節點;如果未使用此屬性,則為 null。 |
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 Schema [XML Schema Part 1] 的驗證,則使用後網要驗證資訊集貢獻(PSVI 貢獻)值確定此屬性是否是使用 [XPointer] 中的 schema-determined ID 定義的網要確定的 ID 屬性。
Document.normalizeDocument() 時使用 DTD 進行驗證,則使用資訊集 [type definition] 值確定此屬性是否是使用 [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。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。