Интерфейс 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
Краткое описание полей
Поля, объявленные в интерфейсе 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
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
String |
getName() |
Возвращает имя этого атрибута. |
Element |
getOwnerElement() |
Узел Element, к которому прикреплен этот атрибут, или null, если этот атрибут не используется. |
TypeInfo |
getSchemaTypeInfo() |
Информация о типе, связанная с этим атрибутом. |
boolean |
getSpecified() |
True, если этому атрибуту было явно присвоено значение в документе-экземпляре, false в противном случае. |
String |
getValue() |
При получении значение атрибута возвращается как строка. |
boolean |
isId() |
Возвращает, известно ли, что этот атрибут имеет тип ID (т.е. содержит идентификатор для элемента-владельца), или нет. |
void |
setValue |
При получении значение атрибута возвращается как строка. |
Методы, объявленные в интерфейсе 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()
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. Реализация может использовать несколько способов определения, является ли узел атрибута известным узлом, содержащим идентификатор: - Если проверка выполнена с использованием XML Schema [XML Schema Part 1] во время загрузки документа или вызова
Document.normalizeDocument(), используются значения вкладов пост-схемной валидации (PSVI contributions) для определения, является ли этот атрибут атрибутом ID, определяемым схемой, используя определение «схемно-определенного ID» в [ schema-determined ID] в [XPointer] . - Если проверка выполнена с использованием DTD во время загрузки документа или вызова
Document.normalizeDocument(), используется значение вкладов в информационной модели [определение типа] для определения, является ли этот атрибут атрибутом ID, определяемым DTD, используя определение «DTD-определенного ID» в [ DTD-determined ID] в [XPointer] . - с помощью методов
Element.setIdAttribute(),Element.setIdAttributeNS()илиElement.setIdAttributeNode(), т.е. это атрибут ID, определяемый пользователем;Примечание: Фреймворк XPointer (см. раздел 3.2 в [XPointer] ) рассматривает атрибут 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.
https://download.java.net/java/early_access/jdk24/docs/api/java.xml/org/w3c/dom/Attr.html