Интерфейс 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.
Краткое описание полей
Объявленные поля в интерфейсе 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. Реализация может использовать несколько способов определения, является ли узел атрибута, по имеющимся данным, узлом типа ID: - Если валидация произошла с использованием XML Schema [XML Schema Part 1] во время загрузки документа или вызова
Document.normalizeDocument(), используются значения пополнений инфосета после валидации схемы (PSVI contributions) для определения того, является ли этот атрибут атрибутом типа ID, определяемым схемой, используя определение schema-determined ID в [XPointer] . - Если валидация произошла с использованием DTD при загрузке документа или вызове
Document.normalizeDocument(), используется значение инфосета [type definition] для определения того, является ли этот атрибут атрибутом типа ID, определяемым DTD, используя определение DTD-determined ID в [XPointer] . - из использования методов
Element.setIdAttribute(),Element.setIdAttributeNS(), илиElement.setIdAttributeNode(), т.е. это атрибут типа ID, определенный пользователем;Примечание: XPointer Framework (см. раздел 3.2 в [XPointer] ) рассматривает атрибут типа ID, определенный пользователем DOM, как часть определения внешне определенного идентификатора XPointer.
- с использованием механизмов, которые выходят за рамки данного спецификации, это тогда атрибут типа ID, определенный внешне. Это включает использование языков схем, отличных от XML schema и DTD.
Если валидация произошла во время вызова
Document.normalizeDocument(), все атрибуты типа ID, определенные пользователем, сбрасываются, и вся информация об атрибутах типа ID всех узлов атрибутов затем переоценивается в соответствии со используемой схемой. Вследствие этого, если атрибут Attr.schemaTypeInfo содержит тип ID, isId всегда вернет true.- С:
- 1.5, DOM Level 3
© 1993, 2023, 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/21/docs/api/java.xml/org/w3c/dom/Attr.html