Как заставить Сариссу использовать DTD при разборе XML?

Я использую Sarissa для преобразования строки XML в объект документа DOM. Все работает за исключением того, что Сарисса полностью игнорирует мое 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");
    ...
}

Как я могу заставить Сариссу использовать DTD?

1 ответ

Решение

Исходный код Сариссы не имеет специального кода для DOMParser(). По сути, он включает в себя нативную реализацию IE, Safari или Firefox/Opera, которая может не анализировать DTD в используемом вами браузере, поскольку внешний анализ DTD, к сожалению, является необязательным аспектом XML (даже для сущностей), а проверка еще менее надежна, Веб-тип заставляет человека работать с подстановками на стороне сервера (или, возможно, с внутренними определениями подмножеств документов, которые могут все еще игнорироваться при проверке).

Другие вопросы по тегам