如何使Sarissa在解析XML时使用DTD

How to make Sarissa use a DTD when parsing XML?

本文关键字:DTD XML 何使 Sarissa      更新时间:2023-09-26

我使用Sarissa将XML字符串转换为DOM文档对象。除了Sarissa完全忽略了我的DTD之外,一切正常。没有注意到对DTD规则的偏离,也没有看到任何关于没有找到DTD的消息。

我的XML开头是这样的:

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE workspace SYSTEM "dtd/config.dtd">

和我的JavaScript看起来像这样:

function toXML(str) {
    var responseDoc = (new DOMParser()).parseFromString(str, "text/xml");
    ...
}

如何让Sarissa使用DTD?

Sarissa的源代码中没有任何非常特殊的DOMParser()解析代码。它基本上包装了IE、Safari或Firefox/Opera的本机实现,这些实现可能不会在您使用的浏览器中解析DTD,因为外部DTD解析是XML的一个可选方面(即使对于实体),而且验证更不确定。web迫使人们使用服务器端替换(或者可能是内部文档子集定义,这些定义可能在验证时仍然被忽略)。