Интерфейс Attr
- Все суперинтерфейсы:
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, но при этом существенно от них отличаются.
Фактическое значение атрибута определяется следующим образом: если этому атрибуту явно присвоено какое-либо значение, это значение и является фактическим значением атрибута; в противном случае, если для этого атрибута существует объявление, включающее значение по умолчанию, фактическим значением атрибута является это значение по умолчанию; в противном случае атрибут отсутствует в данном элементе в модели структуры, пока его не добавят явно. Обратите внимание, что атрибут Node.nodeValue экземпляра Attr также можно использовать для получения строкового представления значения (значений) атрибута.
Если в документе экземпляра атрибуту явно не присвоено значение, но схема, связанная с документом, задает значение по умолчанию, будет создан узел атрибута, у которого specified установлено в false. Удаление узлов атрибутов, для которых в схеме определено значение по умолчанию, создает новый узел атрибута со значением по умолчанию и specified, установленным в false. Если при вызове Document.normalizeDocument() выполнялась проверка, узлы атрибутов, у которых specified равно false, пересчитываются в соответствии со значениями атрибутов по умолчанию, заданными в схеме. Если в схеме для этого атрибута не задано значение по умолчанию, узел атрибута удаляется.
В XML, где значение атрибута может содержать ссылки на сущности, дочерними узлами узла Attr могут быть узлы Text или EntityReference (если они используются; см. описание EntityReference).
DOM Core представляет все значения атрибутов в виде простых строк, даже если связанная с документом DTD или схема объявляет их значения имеющими определенный тип, например токенизированный.
Способ нормализации значения атрибута реализацией DOM зависит от того, насколько реализации известна используемая схема. Обычно атрибуты value и nodeValue узла Attr изначально возвращают нормализованное значение, предоставленное парсером. То же происходит после вызова Document.normalizeDocument() (при условии, что заданы нужные параметры). Однако после изменения это может быть не так — независимо от того, выполняется ли изменение путем непосредственного присвоения строкового значения или путем изменения дочерних узлов Attr. В частности, это верно при наличии ссылок на символы, поскольку они не представлены в 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.
- Начиная с версии:
- 1.4, DOM Level 2
Краткое описание полей
Поля, объявленные в интерфейсе 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 | Модификатор и тип | Поле | Описание |
|---|---|---|
static final short |
ATTRIBUTE_NODE |
Узел является Attr. |
static final short |
CDATA_SECTION_NODE |
Узел является CDATASection. |
static final short |
COMMENT_NODE |
Узел является Comment. |
static final short |
DOCUMENT_FRAGMENT_NODE |
Узел является DocumentFragment. |
static final short |
DOCUMENT_NODE |
Узел является Document. |
static final short |
DOCUMENT_POSITION_CONTAINED_BY |
Узел содержится в опорном узле. |
static final short |
DOCUMENT_POSITION_CONTAINS |
Узел содержит опорный узел. |
static final short |
DOCUMENT_POSITION_DISCONNECTED |
Два узла не связаны. |
static final short |
DOCUMENT_POSITION_FOLLOWING |
Узел следует за опорным узлом. |
static final short |
DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC |
Определение того, какой узел предшествует другому, зависит от реализации. |
static final short |
DOCUMENT_POSITION_PRECEDING |
Второй узел предшествует опорному узлу. |
static final short |
DOCUMENT_TYPE_NODE |
Узел является DocumentType. |
static final short |
ELEMENT_NODE |
Узел является Element. |
static final short |
ENTITY_NODE |
Узел является Entity. |
static final short |
ENTITY_REFERENCE_NODE |
Узел является EntityReference. |
static final short |
NOTATION_NODE |
Узел является Notation. |
static final short |
PROCESSING_INSTRUCTION_NODE |
Узел является ProcessingInstruction. |
static final short |
TEXT_NODE |
Узел является узлом Text. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
String |
getName() |
Возвращает имя этого атрибута. |
Element |
getOwnerElement() |
Узел Element, к которому прикреплен этот атрибут, или null, если этот атрибут не используется. |
TypeInfo |
getSchemaTypeInfo() |
Информация о типе, связанная с этим атрибутом. |
boolean |
getSpecified() |
True, если этому атрибуту явно присвоено значение в документе экземпляра, и false в противном случае. |
String |
getValue() |
При получении значение атрибута возвращается в виде строки. |
boolean |
isId() |
Возвращает сведения о том, известно ли, что этот атрибут имеет тип ID (то есть содержит идентификатор своего элемента-владельца). |
void |
setValue |
При получении значение атрибута возвращается в виде строки. |
Методы, объявленные в интерфейсе 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 | Модификатор и тип | Метод | Описание |
|---|---|---|
Node |
appendChild |
Добавляет узел newChild в конец списка дочерних узлов этого узла. |
Node |
cloneNode |
Возвращает копию этого узла, то есть служит универсальным конструктором копирования для узлов. |
short |
compareDocumentPosition |
Сравнивает опорный узел (узел, для которого вызывается этот метод) с другим узлом, переданным в качестве параметра, по их положению в документе и в соответствии с порядком документа. |
NamedNodeMap |
getAttributes() |
NamedNodeMap, содержащий атрибуты этого узла (если он является Element), или null в противном случае. |
String |
getBaseURI() |
Абсолютный базовый URI этого узла или null, если реализации не удалось получить абсолютный URI. |
NodeList |
getChildNodes() |
NodeList, содержащий все дочерние узлы этого узла. |
Object |
getFeature |
Этот метод возвращает специализированный объект, реализующий специализированные API указанной функциональности и версии, как указано в . |
Node |
getFirstChild() |
Первый дочерний узел этого узла. |
Node |
getLastChild() |
Последний дочерний узел этого узла. |
String |
getLocalName() |
Локальная часть квалифицированного имени этого узла. |
String |
getNamespaceURI() |
URI пространства имен этого узла или null, если он не задан (см. ). |
Node |
getNextSibling() |
Узел, непосредственно следующий за этим узлом. |
String |
getNodeName() |
Имя этого узла в зависимости от его типа; см. таблицу выше. |
short |
getNodeType() |
Код, представляющий тип базового объекта, как определено выше. |
String |
getNodeValue() |
Значение этого узла в зависимости от его типа; см. таблицу выше. |
Document |
getOwnerDocument() |
Объект Document, связанный с этим узлом. |
Node |
getParentNode() |
Родительский узел этого узла. |
String |
getPrefix() |
Префикс пространства имен этого узла или null, если он не задан. |
Node |
getPreviousSibling() |
Узел, непосредственно предшествующий этому узлу. |
String |
getTextContent() |
Этот атрибут возвращает текстовое содержимое данного узла и его потомков. |
Object |
getUserData |
Получает объект, связанный с ключом в этом узле. |
boolean |
hasAttributes() |
Возвращает сведения о том, есть ли у этого узла атрибуты (если он является элементом). |
boolean |
hasChildNodes() |
Возвращает сведения о том, есть ли у этого узла дочерние узлы. |
Node |
insertBefore |
Вставляет узел newChild перед существующим дочерним узлом refChild. |
boolean |
isDefaultNamespace |
Этот метод проверяет, является ли указанный namespaceURI пространством имен по умолчанию. |
boolean |
isEqualNode |
Проверяет, равны ли два узла. |
boolean |
isSameNode |
Возвращает сведения о том, является ли этот узел тем же узлом, что и указанный. |
boolean |
isSupported |
Проверяет, реализует ли реализация DOM определенную функциональность и поддерживается ли эта функциональность данным узлом, как указано в . |
String |
lookupNamespaceURI |
Находит URI пространства имен, связанный с указанным префиксом, начиная поиск с этого узла. |
String |
lookupPrefix |
Находит префикс, связанный с указанным URI пространства имен, начиная поиск с этого узла. |
void |
normalize() |
Приводит все узлы Text на всей глубине поддерева под этим Node, включая узлы атрибутов, к «нормальной» форме, в которой узлы Text разделяются только структурой (например, элементами, комментариями, инструкциями обработки, разделами CDATA и ссылками на сущности); то есть смежных узлов Text и пустых узлов Text нет. |
Node |
removeChild |
Удаляет дочерний узел, указанный в oldChild, из списка дочерних узлов и возвращает его. |
Node |
replaceChild |
Заменяет дочерний узел oldChild узлом newChild в списке дочерних узлов и возвращает узел oldChild. |
void |
setNodeValue |
Значение этого узла в зависимости от его типа; см. таблицу выше. |
void |
setPrefix |
Префикс пространства имен этого узла или null, если он не задан. |
void |
setTextContent |
Этот атрибут возвращает текстовое содержимое данного узла и его потомков. |
Object |
setUserData |
Связывает объект с ключом в этом узле. |
Подробное описание методов
getName
String getName()
Node.localName отличается от null, этот атрибут является квалифицированным именем.getSpecified
boolean getSpecified()
True, если этому атрибуту явно присвоено значение в документе экземпляра, и false в противном случае. Если приложение изменило значение этого узла атрибута (даже если в итоге оно совпадает со значением по умолчанию), для него устанавливается true. Реализация может аналогичным образом обрабатывать атрибуты со значениями по умолчанию из других схем, однако приложениям следует использовать Document.normalizeDocument(), чтобы гарантировать актуальность этой информации.getValue
String getValue()
getAttribute интерфейса Element. При установке создается узел
Text с необработанным содержимым строки; то есть любые символы, которые XML-процессор распознал бы как разметку, вместо этого рассматриваются как обычный текст. См. также метод Element.setAttribute(). Некоторые специализированные реализации, например некоторые реализации [SVG 1.1], могут автоматически выполнять нормализацию даже после изменения; в таком случае полученное при чтении значение может отличаться от установленного.
setValue
void setValue(String value) throws DOMException
getAttribute интерфейса Element. При установке создается узел
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 может быть недостоверной, если узел был перемещен.- Начиная с версии:
- 1.5, DOM Level 3
isId
boolean isId()
ownerElement этого атрибута можно получить с помощью метода Document.getElementById . Реализация может использовать несколько способов, чтобы определить, известно ли, что узел атрибута содержит идентификатор: - Если при загрузке документа или вызове
Document.normalizeDocument()выполнялась проверка с использованием XML Schema [XML Schema Part 1], для определения того, является ли этот атрибут атрибутом ID, определяемым схемой, используются значения дополнений к набору информации после проверки схемы (PSVI) согласно определению ID, определяемого схемой в [XPointer] . - Если при загрузке документа или вызове
Document.normalizeDocument()выполнялась проверка с использованием DTD, для определения того, является ли этот атрибут атрибутом ID, определяемым DTD, используется значение элемента набора информации [определение типа] согласно определению ID, определяемого DTD в [XPointer] . - при использовании методов
Element.setIdAttribute(),Element.setIdAttributeNS()илиElement.setIdAttributeNode(), то есть когда это атрибут ID, определяемый пользователем;Примечание: Инфраструктура XPointer (см. раздел 3.2 в [XPointer] ) считает атрибут ID, определяемый пользователем DOM, частью определения ID, определяемого внешним источником, в XPointer.
- если используются механизмы, не входящие в область действия этой спецификации, атрибут является атрибутом ID, определяемым внешним источником. Сюда относится использование языков схем, отличных от XML Schema и DTD.
Если при вызове
Document.normalizeDocument() выполнялась проверка, все атрибуты ID, определяемые пользователем, сбрасываются, после чего сведения об ID во всех узлах атрибутов повторно оцениваются в соответствии с используемой схемой. Вследствие этого, если атрибут Attr.schemaTypeInfo имеет тип ID, isId всегда возвращает true.- Начиная с версии:
- 1.5, DOM Level 3
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.