void (XmlAttributeValue value, XmlFile file, XmlRefCountHolder refHolder, XmlTag tag, ProblemsHolder holder) { String idRef = XmlHighlightVisitor.getUnquotedValue(value, tag); if (tag instanceof HtmlTag) { idRef = StringUtil.toLowerCase(idRef); } if (XmlUtil.isSimpleValue(idRef, value) && refHolder.isIdReferenceValue(value)) { boolean hasIdDeclaration = refHolder.hasIdDeclaration(idRef); if (!hasIdDeclaration && tag instanceof HtmlTag) { hasIdDeclaration = refHolder.hasIdDeclaration(value.getValue()); } if (!hasIdDeclaration) { for(XmlIdContributor contributor: XmlIdContributor.EP_NAME.getExtensionList()) { if (contributor.suppressExistingIdValidation(file)) { return; } } final FileViewProvider viewProvider = tag.getContainingFile().getViewProvider(); if (viewProvider instanceof MultiplePsiFilesPerDocumentFileViewProvider) { holder.registerProblem(value, XmlAnalysisBundle.message("xml.inspections.invalid.id.reference"), ProblemHighlightType.LIKE_UNKNOWN_SYMBOL, new XmlDeclareIdInCommentAction(idRef)); } else { holder.registerProblem(value, XmlAnalysisBundle.message("xml.inspections.invalid.id.reference"), ProblemHighlightType.LIKE_UNKNOWN_SYMBOL); } } } }