-
- 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
的描述进行讨论)。即使与文档关联的DTD或模式声明了某些特定类型(如标记化),DOM Core将所有属性值表示为简单字符串。
由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
-
-
Field Summary
-
Fields inherited from 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
-
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 String
getName()
返回此属性的名称。Element
getOwnerElement()
如果此属性未使用,则此属性附加到的Element
节点或null
。TypeInfo
getSchemaTypeInfo()
与此属性相关联的类型信息。boolean
getSpecified()
True
此属性是否明确给出了实例文档中的值,false
否则。String
getValue()
在检索时,属性的值作为字符串返回。boolean
isId()
返回此属性是否已知为类型ID(即包含其所有者元素的标识符)。void
setValue(String value)
在检索时,属性的值作为字符串返回。-
Methods inherited from interface 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 3级
-
isId
boolean isId()
返回此属性是否已知为类型ID(即包含其所有者元素的标识符)。 当它是和它的值是唯一的,所述ownerElement
该属性可以使用该方法来检索Document.getElementById
。 该实现可以使用几种方式来确定属性节点是否已知包含标识符:- 如果在加载文档时或在调用
Document.normalizeDocument()
时使用XML模式[ XML Schema Part 1 ]进行验证,则使用后模式验证信息集贡献(PSVI贡献)值来确定此属性是否为使用schema-determined ID定义的模式确定的ID属性在[ 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()
发生验证,Document.normalizeDocument()
所有用户确定的ID属性,然后根据所使用的模式重新评估所有属性节点ID信息。 因此,如果Attr.schemaTypeInfo
属性包含ID类型,则isId
将始终返回true。- 从以下版本开始:
- 1.5,DOM 3级
- 如果在加载文档时或在调用
-
-