public static String getFileOfAscendency(Element decl) { Element e = decl; String file = null; Set<Integer> visitedIds = new TreeSet<Integer>(); while (e != null && (file = e.getElementFile()) == null && visitedIds.add(e.getId())) { e = e.getParentElement(); } return file; }