void (VirtualFile instanceFile, VirtualFile schemaFile, org.xml.sax.ErrorHandler eh) { final SchemaReader sr = FileTypeRegistry.getInstance().isFileOfType(schemaFile, RncFileType.getInstance()) ? CompactSchemaReader.getInstance() : new AutoSchemaReader(); final PropertyMapBuilder properties = new PropertyMapBuilder(); ValidateProperty.ERROR_HANDLER.put(properties, eh); // TODO: should some options dialog displayed before validating? RngProperty.CHECK_ID_IDREF.add(properties); try { final String schemaPath = VfsUtilCore.fixIDEAUrl(schemaFile.getUrl()); try { final ValidationDriver driver = new ValidationDriver(properties.toPropertyMap(), sr); final InputSource in = ValidationDriver.uriOrFileInputSource(schemaPath); in.setEncoding(schemaFile.getCharset().name()); if (driver.loadSchema(in)) { final String path = VfsUtilCore.fixIDEAUrl(instanceFile.getUrl()); try { driver.validate(ValidationDriver.uriOrFileInputSource(path)); } catch (IOException e1) { eh.fatalError(new SAXParseException(e1.getMessage(), null, UriOrFile.fileToUri(path), -1, -1, e1)); } } } catch (SAXParseException e1) { eh.fatalError(e1); } catch (IOException e1) { eh.fatalError(new SAXParseException(e1.getMessage(), null, UriOrFile.fileToUri(schemaPath), -1, -1, e1)); } } catch (SAXException | MalformedURLException e1) { // huh? Logger.getInstance(RngValidateHandler.class.getName()).error(e1); } }