如何用Delphi读取DOCTYPE SYSTEM标识符?

时间:2010-09-27 08:22:09

标签: delphi doctype msxml

对于具有DOCTPYE声明的文档,如

<!DOCTYPE RootElement SYSTEM "file.dtd">

使用MSXML的Delphi 2009报告systemId为空(“”):

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

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

正确验证DOCTYPE名称id“RootElement”。

这是Delphi(或我的代码)中的错误,还是我使用的MSXML版本不支持此属性?

2 个答案:

答案 0 :(得分:1)

MSXML的DocumentType实现完全缺少DocumentType属性publicIdsystemIdinternalSubsetMSDN api ref;缺少的属性在MS-DOM2CX中专门调用。

如果您需要此信息,则可能需要尝试不同的DOM实现。这是one。如果您可以使用.NET类,System.Xml也支持它。

答案 1 :(得分:0)

如果ProhibitDTD属性为True,请尝试将其设置为False。

这是一个article,其中包含更多详细信息。