-
- All Superinterfaces:
-
Node
public interface Attr extends Node
Attr
接口表示Element
对象中的属性。 通常,属性的允许值在与文档关联的模式中定义。Attr
对象继承Node
接口,但由于它们实际上不是它们描述的元素的子节点,因此DOM不认为它们是文档树的一部分。 因此,Node
字段parentNode
,previousSibling
,和nextSibling
具有null
为值Attr
对象。 DOM认为属性是元素的属性,而不是与它们关联的元素具有单独的标识; 这应该使得实现诸如与给定类型的所有元素相关联的默认属性之类的特征更有效。 此外,Attr
节点可能不是一个立即的孩子DocumentFragment
。 然而,他们可以关联Element
包含一个内节点DocumentFragment
。 简而言之,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中公开的值以及值的序列化之间的关系的一些示例:
Examples of the Original, Normalized and Serialized Values Examples Parsed attribute value InitialAttr.value
Serialized attribute value Character reference"x²=5"
"x²=5"
"x²=5"
Built-in character entity"y<6"
"y<6"
"y<6"
Literal newline between"x=5 y=6"
"x=5 y=6"
"x=5 y=6"
Normalized newline between"x=5 y=6"
"x=5 y=6"
"x=5 y=6"
Entitye
with literal newline<!ENTITY e '... ...'> [...]> "x=5&e;y=6"
Dependent on Implementation and Load Options Dependent on Implementation and Load/Save Options
-
-
字段汇总
-
Fields declared in interface 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.localName
与null
不同,则此属性是限定名称。
-
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
。- 从以下版本开始:
- 1.4,DOM Level 2
-
getSchemaTypeInfo
TypeInfo getSchemaTypeInfo()
与此属性关联的类型信息。 虽然此属性中包含的类型信息在加载文档或调用Document.normalizeDocument()
后保证正确,schemaTypeInfo
如果移动了节点,则schemaTypeInfo
可能不可靠。- 从以下版本开始:
- 1.5,DOM Level 3
-
isId
boolean isId()
返回此属性是否已知为类型ID(即包含其所有者元素的标识符)。 当它是和它的值是唯一的,所述ownerElement
该属性可以使用该方法来检索Document.getElementById
。 实现可以使用多种方法来确定属性节点是否已知包含标识符:- 如果在加载文档时或在调用
Document.normalizeDocument()
时使用XML架构[ XML Schema Part 1 ]进行验证,则使用schema-determined ID定义来确定此属性是否为架构确定的ID属性后架构验证信息集贡献(PSVI贡献)值在[ XPointer ]。 - 如果在加载文档时或在调用
Document.normalizeDocument()
时使用DTD进行验证,则使用信息集[类型定义]值来确定此属性是否是使用[ 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。- 从以下版本开始:
- 1.5,DOM Level 3
- 如果在加载文档时或在调用
-
-