Интерфейс 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" | Зависит от реализации и параметров загрузки | Зависит от реализации и параметров загрузки/сохранения |
См. также Спецификацию объектной модели документа (DOM) уровня 3 Core.
- Начиная с версии:
- 1.4, DOM уровня 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
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
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
Подробное описание методов
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 уровня 2
getSchemaTypeInfo
TypeInfo getSchemaTypeInfo()
Document.normalizeDocument(), schemaTypeInfo может оказаться недостоверным, если узел был перемещен.- Начиная с версии:
- 1.5, DOM уровня 3
isId
boolean isId()
ownerElement этого атрибута можно получить с помощью метода Document.getElementById . Реализация может использовать несколько способов, чтобы определить, известно ли, что узел атрибута содержит идентификатор: - Если при загрузке документа или вызове
Document.normalizeDocument()выполнялась проверка с использованием XML Schema [XML Schema, часть 1], для определения того, является ли этот атрибут ID-атрибутом, определяемым схемой, используются значения постсхемных дополнений информационного набора (дополнения PSVI) в соответствии с определением ID, определяемого схемой в [XPointer]. - Если при загрузке документа или вызове
Document.normalizeDocument()выполнялась проверка с использованием DTD, для определения того, является ли этот атрибут ID-атрибутом, определяемым DTD, используется значение информационного набора [определение типа] в соответствии с определением ID, определяемого DTD в [XPointer]. - в результате использования методов
Element.setIdAttribute(),Element.setIdAttributeNS()илиElement.setIdAttributeNode(), то есть этот атрибут является ID-атрибутом, определяемым пользователем;Примечание: XPointer Framework (см. раздел 3.2 в [XPointer]) рассматривает определяемый пользователем ID-атрибут DOM как часть определения ID, определяемого внешним образом, в XPointer.
- при использовании механизмов, выходящих за рамки этой спецификации, атрибут является ID-атрибутом, определяемым внешним образом. Сюда входит использование языков схем, отличных от XML Schema и DTD.
Если при вызове
Document.normalizeDocument() выполнялась проверка, все определяемые пользователем ID-атрибуты сбрасываются, а сведения об ID всех узлов атрибутов затем переоцениваются в соответствии с используемой схемой. В результате, если атрибут Attr.schemaTypeInfo содержит тип ID, isId всегда возвращает true.- Начиная с версии:
- 1.5, DOM уровня 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.xml/org/w3c/dom/Attr.html