public interface Attr
implements Node
org.w3c.dom.Attr |
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或模式声明了某些特定类型(如标记化)。
属性值规范化的方式由DOM实现执行取决于实现知道有关正在使用的模式的程度。 通常, Attr
节点的value
和nodeValue
属性最初会返回解析器给出的规范化值。 在Document.normalizeDocument()
之后也是如此(假设已经设置了正确的选项)。 但是,这可能不是突变的突变后,独立的是否通过直接设置字符串值或改变进行的情况Attr
个节点。 尤其是,当涉及character references时,这是真实的,因为它们不在DOM中表示,并且它们影响属性值标准化。 另一方面,如果实现在属性值发生更改时知道正在使用的模式,并且它与CDATA类型不同,则可以在此时再次对其进行规范化。 对于专门的DOM实现尤其如此,例如SVG DOM实现,它们将属性值以不同于字符串的内部形式存储。
下表给出了原始文档中的属性值(解析属性),DOM中公开的值以及该值的序列化之间的关系的一些示例:
Examples | Parsed attribute value | Initial Attr.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" |
Entity e with literal newline |
<!ENTITY e '... ...'> [...]> "x=5&e;y=6" |
Dependent on Implementation and Load Options | Dependent on Implementation and Load/Save Options |
另见 Document Object Model (DOM) Level 3 Core Specification 。
Inherited constants |
---|
From interface org.w3c.dom.Node
|
Public methods |
|
---|---|
abstract String |
getName() 返回此属性的名称。 |
abstract Element |
getOwnerElement() 如果此属性未使用,则此属性附加到的 |
abstract TypeInfo |
getSchemaTypeInfo() 与此属性关联的类型信息。 |
abstract boolean |
getSpecified()
|
abstract String |
getValue() 在检索时,属性的值作为字符串返回。 |
abstract boolean |
isId() 返回此属性是否已知为类型ID(即 |
abstract void |
setValue(String value) 在检索时,属性的值作为字符串返回。 |
Inherited methods |
|
---|---|
From interface org.w3c.dom.Node
|
String getName ()
返回此属性的名称。 如果Node.localName
与null
不同,则此属性是限定名称。
Returns | |
---|---|
String |
Element getOwnerElement ()
如果此属性未使用,则此属性附加的 Element
节点或 null
。
Returns | |
---|---|
Element |
TypeInfo getSchemaTypeInfo ()
与此属性关联的类型信息。 虽然在加载文档或调用Document.normalizeDocument()
后,此属性中包含的类型信息保证是正确的, schemaTypeInfo
如果节点已移动,则schemaTypeInfo
可能不可靠。
Returns | |
---|---|
TypeInfo |
boolean getSpecified ()
True
如果该属性在实例文档中被明确赋予一个值,否则为false
。 如果应用程序更改了此属性节点的值(即使它最终具有与默认值相同的值),那么它将被设置为true
。 该实现可以使用来自其他模式的默认值处理属性,但应用程序应使用Document.normalizeDocument()
来保证此信息是最新的。
Returns | |
---|---|
boolean |
String getValue ()
在检索时,属性的值作为字符串返回。 字符和一般实体引用被替换为它们的值。 另请参阅Element
界面上的方法getAttribute
。
在设置时,这将创建一个Text
字符串未解析内容的Text
节点,即任何XML处理器将识别为标记的字符都将被视为文字文本。 另见方法Element.setAttribute()
。
一些专门的实现,例如一些[ SVG 1.1 ]实现,可能会自动执行标准化,即使在变异之后; 在这种情况下,检索值可能与设置值不同。
Returns | |
---|---|
String |
boolean isId ()
返回此属性是否已知为类型ID(即包含其所有者元素的标识符)。 当它是和它的值是唯一的,所述ownerElement
该属性可以使用该方法来检索Document.getElementById
。 实现可以使用几种方法来确定属性节点是否已知包含标识符:
Document.normalizeDocument()
, the post-schema-validation infoset contributions (PSVI contributions) values are used to determine if this attribute is a schema-determined ID attribute using the schema-determined ID definition in [XPointer] . Document.normalizeDocument()
, the infoset [type definition] value is used to determine if this attribute is a DTD-determined ID attribute using the DTD-determined ID definition in [XPointer] . Element.setIdAttribute()
, Element.setIdAttributeNS()
, or Element.setIdAttributeNode()
, i.e. it is an user-determined ID attribute; 注: XPointer框架(参见[ XPointer ]中的第3.2节)将DOM用户确定的ID属性视为XPointer外部确定的ID定义的一部分。
Document.normalizeDocument()
, all user-determined ID attributes are reset and all attribute nodes ID information are then reevaluated in accordance to the schema used. As a consequence, if the
Attr.schemaTypeInfo
attribute contains an ID type,
isId
will always return true.
Returns | |
---|---|
boolean |
void setValue (String value)
在检索时,属性的值作为字符串返回。 字符和一般实体引用被替换为它们的值。 另请参阅Element
接口上的方法getAttribute
。
在设置时,这会创建一个Text
字符串未解析内容的Text
节点,也就是说,XML处理器将识别为标记的任何字符都将被视为文字文本。 另见方法Element.setAttribute()
。
一些专门的实现,例如某些[ SVG 1.1 ]实现,可能会自动执行标准化,即使在变异之后; 在这种情况下,检索值可能与设置值不同。
Parameters | |
---|---|
value |
String
|
Throws | |
---|---|
DOMException |
NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly. |