List<XmlAttributeValue> (final @NotNull XmlFile file) { final List<XmlAttributeValue> result = new ArrayList<>(); file.acceptChildren(new XmlRecursiveElementWalkingVisitor() { @Override public void visitXmlTag(@NotNull XmlTag tag) { XmlAttribute attribute = null; if ("link".equalsIgnoreCase(tag.getName())) { attribute = tag.getAttribute("href"); } else if ("script".equalsIgnoreCase(tag.getName()) || "img".equalsIgnoreCase(tag.getName())) { attribute = tag.getAttribute("src"); } if (attribute != null) result.add(attribute.getValueElement()); super.visitXmlTag(tag); } @Override public void visitElement(@NotNull PsiElement element) { if (element.getLanguage() instanceof XMLLanguage) { super.visitElement(element); } } }); return result.isEmpty() ? Collections.emptyList() : result; }