void (@NotNull PsiReferenceRegistrar registrar) { final XmlTagPattern xsltTag = xmlTag().withNamespace(XsltSupport.XSLT_NS); registrar.registerReferenceProvider( xmlAttributeValue("name", "href", "mode", "elements", "exclude-result-prefixes", "extension-element-prefixes", "stylesheet-prefix") .withSuperParent(2, xsltTag), new XsltReferenceProvider()); registrar.registerReferenceProvider( xmlAttributeValue("as") .withValue(string().matches("[^()]+")) .withSuperParent(2, xsltTag), SchemaTypeProvider.INSTANCE); registrar.registerReferenceProvider( xmlAttributeValue("as") .withSuperParent(2, xsltTag) .withValue(string().contains(":")), new PsiReferenceProvider() { @Override public PsiReference @NotNull [] getReferencesByElement(@NotNull PsiElement element, @NotNull ProcessingContext context) { return new PsiReference[]{ new NamespacePrefixReference(element) }; } }); }