public interface Attr extends Node
Attr
接口表示Element
对象中的属性。
通常,属性的允许值在与文档关联的模式中定义。
Attr
对象继承了Node
接口,但是由于它们不是他们描述的元素的子节点,所以DOM不认为它们是文档树的一部分。 因此, Node
属性parentNode
, previousSibling
和nextSibling
具有null
为值Attr
对象。 DOM接受属性是元素的属性的视图,而不是与它们相关联的元素具有单独的标识; 这应该使其更有效地实现与给定类型的所有元素相关联的默认属性。 此外, Attr
节点可能不是一个立即的孩子DocumentFragment
。 但是,它们可以与DocumentFragment中包含的Element
节点相关DocumentFragment
。 总之,用户和DOM的实现者需要注意的是Attr
节点有一些共同的东西与继承的其他对象Node
接口,但它们还是截然不同的。
属性的有效值如下确定:如果该属性已被明确分配任何值,则该属性的属性的有效值; 否则,如果有这个属性的声明,并且该声明包含一个默认值,则该默认值是属性的有效值; 否则,该属性在结构模型中不存在,直到它已被显式添加。 需要注意的是Node.nodeValue
的属性Attr
实例也可以用来检索属性的值(一个或多个)的字符串版本。
如果属性未在实例文档中显式给定值,但是具有由与文档相关联的架构提供的默认值,则将创建一个属性节点, specified
设置为false
设置为false
。 删除在模式中定义默认值的属性节点会生成一个新的属性节点,默认值为specified
设置为false
。 如果在调用时出现确认Document.normalizeDocument()
,属性节点与specified
等于false
根据该模式提供的默认属性值重新计算。 如果在模式中没有默认值与此属性相关联,那么属性节点将被丢弃。
在XML中,属性的值可以包含实体引用, Attr
节点的子节点可以是Text
或EntityReference
节点(当这些节点在使用时;参见EntityReference
的讨论)。
即使与文档关联的DTD或模式声明了某些特定类型(如标记化),DOM Core将所有属性值表示为简单字符串。
由DOM实现执行属性值归一化的方式取决于实现对所使用的模式的了解程度。 通常, Attr
节点的value
和nodeValue
属性最初返回由解析器给出的归一化值。 Document.normalizeDocument()
被调用也是如此(假定正确的选项被设置)。 但突变后可能不是这种情况,不管是通过直接设置字符串值还是通过更改Attr
子节点进行Attr
。 特别是,当这是真的character references参与,因为他们不会在DOM表示,并且影响属性值正常化。 另一方面,如果实现在属性值改变时知道正在使用的模式,并且它与CDATA类型不同,那么它可能会在那时再次正常化。 这对于专门的DOM实现尤其如此,例如SVG DOM实现,其以不同于字符串的内部形式存储属性值。
下表给出了原始文档(已解析属性)中的属性值,DOM中暴露的值与值序列化之间关系的示例:
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"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
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 | Method and Description |
---|---|
String |
getName()
返回此属性的名称。
|
Element |
getOwnerElement()
Element 此属性附加的节点或
null 如果此属性未使用。
|
TypeInfo |
getSchemaTypeInfo()
与此属性相关联的类型信息。
|
boolean |
getSpecified()
True 如果这个属性在实例文档中被明确赋予了一个值,
false 否则。
|
String |
getValue()
在检索时,属性的值作为字符串返回。
|
boolean |
isId()
返回此属性是否已知为类型ID(即
|
void |
setValue(String value)
在检索时,属性的值作为字符串返回。
|
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
String getName()
Node.localName
与null
,则此属性是限定名称。
boolean getSpecified()
True
如果该属性在实例文档中被明确赋予了一个值, false
false。
如果应用程序更改了此属性节点的值(即使它的值与默认值相同),则设置为true
。
实现可以类似地处理来自其他模式的默认值的属性,但应用程序应使用Document.normalizeDocument()
来保证此信息是最新的。
String getValue()
getAttribute
上的Element
getAttribute。
Text
节点,即将XML处理器识别为标记的任何字符都将视为文字文本。
另见方法Element.setAttribute()
。
void setValue(String value) throws DOMException
getAttribute
上的Element
getAttribute。
Text
节点,即XML处理器将识别为标记的任何字符都将被视为文字文本。
另见方法Element.setAttribute()
。
DOMException
- NO_MODIFICATION_ALLOWED_ERR:当节点只读时提升。
Element getOwnerElement()
Element
此属性附加到的节点或
null
如果此属性未使用。
TypeInfo getSchemaTypeInfo()
Document.normalizeDocument()
后保证是正确的, schemaTypeInfo
如果节点被移动,则schemaTypeInfo
可能不可靠。
boolean isId()
ownerElement
该属性可以使用该方法来检索Document.getElementById
。
该实现可以使用几种方式来确定属性节点是否已知包含标识符:
Document.normalizeDocument()
,所述架构验证后信息集的贡献(PSVI贡献)值被用于确定是否此属性是使用一个模式确定的ID属性schema-determined ID定义在[ XPointer ]。 Document.normalizeDocument()
,所述信息集[类型定义]值被用于确定是否此属性是使用一个DTD确定的ID属性DTD-determined ID在[定义XPointer ]。 Element.setIdAttribute()
, Element.setIdAttributeNS()
,或Element.setIdAttributeNode()
,即它是一个用户确定的ID属性; 注意: XPointer框架(参见[ XPointer ]中的第3.2节)将DOM用户确定的ID属性视为XPointer外部确定的ID定义的一部分。
Document.normalizeDocument()
,则会重置所有用户确定的ID属性,然后根据所使用的模式重新评估所有属性节点ID信息。
因此,如果Attr.schemaTypeInfo
属性包含ID类型,则isId
将始终返回true。