Как я могу прочитать идентификатор системы DOCTYPE с помощью Delphi? - PullRequest
2 голосов
/ 27 сентября 2010

Для документа с объявлением DOCTPYE, например

<!DOCTYPE RootElement SYSTEM "file.dtd">

Delphi 2009, использующий MSXML, сообщает, что системный идентификатор пуст (""):

Assert(Doc.DOMDocument.doctype.systemId <> ''); // fails!

, а

Assert(Doc.DOMDocument.doctype.name = 'RootElement'); // ok

правильно проверяет, что идентификатор имени DOCTYPE "RootElement".

Это ошибка в Delphi (или мой код) или я использую версию MSXML, которая не поддерживает это свойство?

Ответы [ 2 ]

1 голос
/ 27 сентября 2010

В реализации DocumentType MSXML полностью отсутствуют свойства DocumentType publicId, systemId и internalSubset. MSDN api ref ;отсутствующие свойства специально вызываются в MS-DOM2CX .

Если вам нужна эта информация, возможно, вам придется попробовать другую реализацию DOM.Вот один .Если вы можете использовать классы .NET, System.Xml также поддерживает это.

0 голосов
/ 27 сентября 2010

В случае, если свойство ProhibitDTD имеет значение True, попробуйте установить значение False.

Вот статья с более подробной информацией.

...