Это на самом деле недостаток спецификаций XML. W3C жалуется, что все люди бьют по своим серверам, как сумасшедшие, чтобы загружать схемы миллиарды раз. К сожалению, практически ни одна стандартная библиотека XML не получает этого права, все они снова и снова обращаются к серверам.
Проблема с DTD является особенно серьезной, потому что DTD могут включать в себя общие объявления сущностей (для таких вещей, как &
-> &), на которые может действительно опираться файл XML. Поэтому, если ваш синтаксический анализатор отказывается загружать DTD, а XML использует общие ссылки на сущности, синтаксический анализ может фактически завершиться неудачей.
Единственным решением этой проблемы был бы прозрачный распознаватель объектов кэширования, который помещал бы загруженные файлы в некоторый архив в пути поиска библиотеки, чтобы этот архив создавался динамически и почти автоматически связывался с любыми сделанными дистрибутивами программного обеспечения. Но даже в мире Java нет ни одного приличного плавающего EntityResolver, конечно, не встроенного ни к чему от Apache Foundation.