@Override public void visitXmlAttributeValue(@NotNull XmlAttributeValue value) {
    checkReferences(value);

    final PsiElement parent = value.getParent();
    if (!(parent instanceof XmlAttribute attribute)) {
      return;
    }

    XmlTag tag = attribute.getParent();

    if (tag == null) {
      LOG.error("Missing tag for attribute: " + attribute.getName(),
                new Attachment(myHolder.getContextFile().getName(), myHolder.getContextFile().getText()));
      return;
    }

    XmlAttributeDescriptor attributeDescriptor = attribute.getDescriptor();

    if (attributeDescriptor != null && !skipValidation(value)) {
      String error = attributeDescriptor.validateValue(value, attribute.getValue());

      if (error != null) {
        HighlightInfoType type = getTagProblemInfoType(tag);
        if (error.startsWith("<html>")) {
          add(HighlightInfo.newHighlightInfo(type).range(value)
                         .description(StringUtil.removeHtmlTags(error).replace("\n", " "))
                         .escapedToolTip(error).create());
        }
        else {
          add(HighlightInfo.newHighlightInfo(type).range(value).descriptionAndTooltip(error).create());
        }
      }
    }
  }
@Override public void visitXmlAttributeValue(@NotNull XmlAttributeValue value)