Интерфейс 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.
Поля
Поля, объявленные в интерфейсе 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() | Узел |
TypeInfo | getSchemaTypeInfo() | Информация о типе, связанная с этим атрибутом. |
boolean | getSpecified() |
|
String | getValue() | При получении значение атрибута возвращается в виде строки. |
boolean | isId() | Возвращает, известно ли, что этот атрибут имеет тип ID (т.е. содержит идентификатор для элемента-владельца) или нет. |
void | setValue(String value) | При получении значение атрибута возвращается в виде строки. |
Методы, объявленные в интерфейсе 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], могут выполнять нормализацию автоматически, даже после изменения; в таком случае значение при получении может отличаться от значения при установке.
- Throws:
-
DOMException- NO_MODIFICATION_ALLOWED_ERR: Поднимается, когда узел является только для чтения.
getOwnerElement
Element getOwnerElement()
Узел Element , к которому прикреплен этот атрибут, или null , если этот атрибут не используется.
- Since:
- 1.4, DOM Level 2
getSchemaTypeInfo
TypeInfo getSchemaTypeInfo()
Информация о типе, связанная с этим атрибутом. Хотя информация о типе, содержащаяся в этом атрибуте, гарантированно будет верной после загрузки документа или вызова Document.normalizeDocument(), schemaTypeInfo может быть ненадежной, если узел был перемещен.
- Since:
- 1.5, DOM Level 3
isId
boolean isId()
ownerElement этого атрибута можно получить, используя метод Document.getElementById . Реализация может использовать несколько способов определения того, является ли узел атрибута известным узлом, содержащим идентификатор: - Если валидация произошла с использованием XML Schema [XML Schema Part 1] во время загрузки документа или при вызове
Document.normalizeDocument(), используются значения вкладов пост-схемной валидации (PSVI вкладов) для определения того, является ли этот атрибут атрибутом ID, определенным схемой, используя определение schema-determined ID в [XPointer] . - Если валидация произошла с использованием DTD во время загрузки документа или при вызове
Document.normalizeDocument(), используется значение вклада infoset [определение типа] для определения того, является ли этот атрибут атрибутом ID, определенным DTD, используя определение DTD-determined ID в [XPointer] . - из использования методов
Element.setIdAttribute(),Element.setIdAttributeNS(), илиElement.setIdAttributeNode(), т.е. это атрибут ID, определенный пользователем;Примечание: Фреймворк XPointer (см. раздел 3.2 в [XPointer] ) рассматривает атрибут DOM, определенный пользователем, как часть определения идентификатора XPointer, определенного внешним образом.
- с использованием механизмов, которые выходят за рамки этого спецификации, это атрибут ID, определенный внешним образом. Это включает использование языков схем, отличных от XML schema и DTD.
Если валидация произошла при вызове
Document.normalizeDocument(), все атрибуты ID, определенные пользователем, сбрасываются, а затем информация об ID всех узлов атрибутов переоценивается в соответствии со используемой схемой. Вследствие этого, если атрибут Attr.schemaTypeInfo содержит тип ID, isId всегда вернет true.- Since:
- 1.5, DOM Level 3
© 1993, 2020, 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/11/docs/api/java.xml/org/w3c/dom/Attr.html