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