该参考不是针对 Schema ,而是针对 DTD 。
DTD文件不仅可以包含结构规则,还可以包含更多内容。它们也可以包含实体引用。XML解析器必须加载和解析DTD引用,因为它们可能包含实体引用,这些实体引用可能会影响文档的解析方式和文件的内容(您可能拥有针对字符甚至整个短语的实体引用)。
如果要避免加载和解析引用的DTD,可以提供自己的EntityResolver并测试引用的DTD,并决定是加载DTD文件的本地副本,还是只返回null。
来自自定义EntityResolvers的引用答案的代码示例:
builder.setEntityResolver(new EntityResolver() { @Override public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { if (systemId.contains("foo.dtd")) { return new InputSource(new StringReader("")); } else { return null; } } });


