void (final @Nullable String value) { final XmlTag tag = ensureTagExists(); final String attributeName = getXmlElementName(); final String namespace = getXmlApiCompatibleNamespace(getParentHandler()); String tagValue = tag.getAttributeValue(attributeName, namespace); final String oldValue = tagValue == null ? null : StringUtil.unescapeXmlEntities(tagValue); final String newValue = XmlStringUtil.escapeString(value); if (Comparing.equal(oldValue, newValue, true)) return; getManager().runChange(() -> { try { setXmlElement(tag.setAttribute(attributeName, namespace, newValue)); } catch (IncorrectOperationException e) { LOG.error(e); } }); final DomElement proxy = getProxy(); getManager().fireEvent(oldValue != null ? new DomEvent(proxy, false) : new DomEvent(proxy, true)); }