JavaTM 2 Platform
Standard Ed. 6

org.w3c.dom
介面 Attr

所有父級介面:
Node

public interface Attr
extends Node

Attr 介面表示 Element 物件中的屬性。通常該屬性所允許的值定義在與文檔相關的網要中。

Attr 物件繼承 Node 介面,但由於它們實際上不是它們描述的元素的子節點,DOM 不會將它們看作文檔階層樹的一部分。因此,Node 的屬性 parentNodepreviousSiblingnextSibling 具有用於 Attr 物件的 null 值。DOM 認為元素的屬性是其特性,而不是一個來自於它們所關聯的元素的獨立的身份;這應該使實作把這種特徵作為與所有給定型別的元素相關聯的預設屬性更為有效。此外,Attr 節點不可以是 DocumentFragment 的直接子節點。不過,它們可以與包含在 DocumentFragment 內的 Element 節點相關聯。簡而言之,DOM 的使用者和實作者需要知道 Attr 節點與從 Node 介面繼承的其他物件有些共同之處,但它們還是截然不同的。

該屬性的有效值按如下方式確定:如果為此屬性明確分派了任何值,則此值為該屬性的有效值;否則,如果宣告了此屬性,且該宣告包括預設值,則該預設值為屬性的有效值;否則,直到明確添加了屬性,該屬性才會存在於結構模型中的這一元素上。注意,Attr 實例上的 Node.nodeValue 屬性還可以用於檢索該屬性值的字元串版本。

如果該屬性未在實例文檔中明確給定值,但有與文檔相關的網要提供的一個預設值,則創建屬性節點時把 specified 設置為 false。移除在網要中為其定義了預設值的屬性節點將產生一個具有預設值和 specified 設置為 false 的新屬性節點。如果調用 Document.normalizeDocument() 時出現確認,則按照由網要提供的預設屬性值重新計算 specified 等於 false 的屬性節點。如果沒有預設值與網要中的這一屬性相關聯,則該屬性節點被丟棄。

在 XML 中,屬性值可以包含實體參考,Attr 節點的子節點可以是 TextEntityReference 節點(當使用這些節點時;有關討論,請參閱 EntityReference 的描述)。

DOM Core 表示作為簡單字元串的所有屬性值,即使與文檔相關聯的 DTD 或網要宣告它們是某個特定型別(如 tokenized)。

由 DOM 實作執行的屬性值規範化的方式取決於該實作對使用的網要的瞭解程度。通常,Attr 節點的 valuenodeValue 屬性最初返回由解析器給定的標準化值。調用 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


欄位摘要
 
從介面 org.w3c.dom.Node 繼承的欄位
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)
          檢索時,該屬性值以字元串形式返回。
 
從介面 org.w3c.dom.Node 繼承的方法
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
 

方法詳細資訊

getName

String getName()
返回此屬性的名稱。如果 Node.localNamenull 不同,則此屬性是一個限定名稱。


getSpecified

boolean getSpecified()
如果在實例文檔中顯式給此屬性一個值,則為 True;否則為 false。如果應用程序更改了此屬性節點的值(即使它在結尾時有與預設值相同的值),則將它設置為 true。類似地,該實作可以根據其他網要處理具有預設值的屬性,但應用程序應該使用 Document.normalizeDocument() 來保證此資訊最新。


getValue

String getValue()
檢索時,該屬性值以字元串形式返回。字元和常規實體參考將使用其值替換。另請參見 Element 介面上的方法 getAttribute
設置時,此方法使用該字元串的未解析的內容創建 Text 節點,即將 XML 處理器識別為標記的所有字元視為文字值文本。另請參見方法 Element.setAttribute()
有些特殊的實作(如一些 [SVG 1.1] 實作)可以自動執行標準化,即使變化後也一樣;在此情況下,檢索的值可以與設置的值不同。


setValue

void setValue(String value)
              throws DOMException
檢索時,該屬性值以字元串形式返回。字元和常規實體參考將使用其值替換。另請參見 Element 介面上的方法 getAttribute
設置時,此方法使用該字元串的未解析的內容創建 Text 節點,即將 XML 處理器識別為標記的所有字元視為文字值文本。另請參見方法 Element.setAttribute()
有些特殊的實作(如一些 [SVG 1.1] 實作)可以自動執行標準化,即使變化後也一樣;在此情況下,檢索的值可以與設置的值不同。

拋出:
DOMException - NO_MODIFICATION_ALLOWED_ERR:當節點為只讀的時引發此異常。

getOwnerElement

Element getOwnerElement()
此屬性連接到的 Element 節點;如果未使用此屬性,則為 null

從以下版本開始:
DOM Level 2

getSchemaTypeInfo

TypeInfo getSchemaTypeInfo()
與此屬性相關聯的型別資訊。在載入文檔或調用 Document.normalizeDocument() 之後保證此屬性中包含的型別資訊正確時,如果節點被移動,則 schemaTypeInfo 不能不可靠。

從以下版本開始:
DOM Level 3

isId

boolean isId()
返回是否此屬性屬於型別 ID(即包含其所有者元素的標識符)。如果是且其值是唯一的,則可以使用方法 Document.getElementById 檢索此屬性的 ownerElement。實作可以使用幾種方法確定是否知道屬性節點包含標識符:
如果在調用 Document.normalizeDocument() 時出現確認,則重置所有使用者確定的 ID 屬性,然後重新評詁所有屬性節點 ID 資訊與使用的網要是否一致。因此,如果 Attr.schemaTypeInfo 屬性包含 ID 型別,則 isId 將始終返回 true。

從以下版本開始:
DOM Level 3

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only