对于具有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版本不支持此属性?
答案 0 :(得分:1)
MSXML的DocumentType实现完全缺少DocumentType属性publicId
,systemId
和internalSubset
。 MSDN api ref;缺少的属性在MS-DOM2CX中专门调用。
如果您需要此信息,则可能需要尝试不同的DOM实现。这是one。如果您可以使用.NET类,System.Xml也支持它。
答案 1 :(得分:0)
如果ProhibitDTD属性为True,请尝试将其设置为False。
这是一个article,其中包含更多详细信息。