PsiReference[] (final XmlAttributeValue value) { boolean hasNonStandardTokens = ContainerUtil.exists(value.getChildren(), ch -> !ATTRIBUTE_VALUE_STD_TOKENS.contains(ch.getNode().getElementType())); if (hasNonStandardTokens) return PsiReference.EMPTY_ARRAY; String text = value.getValue(); int start = text.indexOf(CHARSET_PREFIX); if (start != -1) { start += CHARSET_PREFIX.length(); int end = text.indexOf(';', start); if (end == -1) end = text.length(); String charsetName = text.substring(start, end); TextRange textRange = new TextRange(start, end).shiftRight(xmlAttributeValueRange(value).getStartOffset()); return new PsiReference[]{new XmlEncodingReference(value, charsetName, textRange, 0)}; } return PsiReference.EMPTY_ARRAY; }