【发布时间】:2010-02-16 05:03:31
【问题描述】:
我的 XML 引用了这样的 DTD:
http://invalid/path/to.dtd">
DTD 无法通过给定的 URL 获得,但我可以将其下载到我的光盘中。我试图实现一个自定义 XmlResolver 来加载 DTD,但它不起作用。我的自定义 XmlResolver 实现了 GetEntity 并通过调试器我可以看到以下调用:
- 请求的 uri 是要加载的 xml 文档。我为此文档打开一个流并将其返回。效果很好。
- DTD 被请求为格式为“file:///absolut/path/to.xml/-//OWNER//NAME//EN”的 URI。我正在使用正则表达式来检查 -//.*?// 效果很好,但对我来说看起来不是很干净。但如果 DTD 是独立的,它就可以工作。
- DTD 正在引用 modules.ent。这将导致使用以下 URI 调用 GetEntity:“file:///absolut/path/to.xml/-//OWNER//NAME//modules.ent”。显然,现在重构路径的内涵变得很奇怪。
任何提示如何以正确的方式实现它?我认为公共外部 DTD 在出版业中很常见,所以必须有一个干净的解决方案!?
干杯, 阿奇姆
【问题讨论】: