I was able to resolve the issue with the message “error parsing DTD” today.
I am on a Windows 10 box which does not provide XML catalogs by default. Thus the environment variable XML_CATALOG_FILES does not exist. Exalt creates it upon startup but it seems too late. The lxml package being used for validation does not see these changes even though running os.environ["XML_CATALOG_FILES"] from ST’s console prints all the correct urls from Exalt.sublime-settings.
I set XML_CATALOG_FILES to the valid catalog file paths in Windows control panel, restarted and Exalt is working like a charm.
You can’t use the "xml_catalog_files": [] to set your catalog file paths.
I am not sure why, but I guess the reason is lxml being used by XPath and maybe some other packages, too, which might load lxml before Exalt is able to manipulate the environment variable.