org.w3c.dom

接口
异常
所有超级接口:
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() 时出现使用 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 定义的一部分。

  • 使用此规范范围之外的机制,则它是外部确定的 ID 属性。这包括使用与 XML 模式和 DTD 不同的模式语言。

如果在调用 Document.normalizeDocument() 时出现确认,则重置所有用户确定的 ID 属性,然后重新评诂所有属性节点 ID 信息与使用的模式是否一致。因此,如果 Attr.schemaTypeInfo 属性包含 ID 类型,则 isId 将始终返回 true。

从以下版本开始:
DOM Level 3