我写了一个自定义解析器类。它适用于解析SYSTEM DTD,但不适用于解析PUBLIC DTD。当类必须解析PUBLIC DTD而不是资源的URI时,该函数通过GetEntity函数的absoluteUri参数接收公共标识符。有没有解决方案。
在示例中:
<!DOCTYPE document SYSTEM "document.dtd">
这样的DTD声明,那么自定义解析器会通过GetEntity函数的absoluteUri参数正确接收字符串“document.dtd”。<!DOCTYPE document PUBLIC "-//Organization//DTD Document 1.0//EN" "http://localhost/document.dtd">
这样的DTD声明,那么自定义解析器会错误地接收字符串“ - // Organization // DTD Document 1.0 // EN”而不是“scheme://host/document.dtd” 答案 0 :(得分:1)
我在Stack Overflow上找到了答案right here。首先,公共标识符(-//Organization//DTD Document 1.0//EN
)作为参数传递,而不是 - 如果第一次调用导致错误 - DTD文件的uri(http://localhost/document.dtd
)。