使用MSXML6-DelphiXe5中的SAX进行DTD验证

使用MSXML6-DelphiXe5中的SAX进行DTD验证,delphi,sax,dtd,msxml,msxml6,Delphi,Sax,Dtd,Msxml,Msxml6,以下代码输出“EOleException:验证期间出错”。这是一个错误: 0xC00CE225 XMLOM_VALIDATE_无效 验证失败 如果我添加错误处理程序,确切的错误消息是“XML既无效也无效,因为找不到任何模式” MSXML 6 SAX解析器是否支持嵌入DTD program TestSAXValidation; {$APPTYPE CONSOLE} {$R *.res} uses ActiveX, System.SysUtils, Winapi.msxml; var

以下代码输出“EOleException:验证期间出错”。这是一个错误: 0xC00CE225 XMLOM_VALIDATE_无效 验证失败

如果我添加错误处理程序,确切的错误消息是“XML既无效也无效,因为找不到任何模式”

MSXML 6 SAX解析器是否支持嵌入DTD

program TestSAXValidation;

{$APPTYPE CONSOLE}

{$R *.res}

uses
    ActiveX, System.SysUtils, Winapi.msxml;

var
    R: IVBSAXXMLReader;
begin
    CoInitialize(nil);

  try
    R := CoSAXXMLReader60.Create;
    R.putFeature('use-inline-schema', True);
    R.putFeature('schema-validation', True);
    R.putFeature('exhaustive-errors', True);
    R.putFeature('prohibit-dtd', False);
    R.parse('<!DOCTYPE a[<!ELEMENT a (#PCDATA)>]> <a></a>');
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
  ReadLn;
end.
程序验证;
{$APPTYPE控制台}
{$R*.res}
使用
ActiveX,System.SysUtils,Winapi.msxml;
变量
R:IVBSAXMLReader;
开始
共初始化(零);
尝试
R:=CoSAXXMLReader60.Create;
R.putFeature('use-inline-schema',True);
R.putFeature('schema-validation',True);
R.putFeature(‘彻底错误’,真);
R.putFeature(“禁止-dtd”,假);
R.parse(“”);
除了
关于E:Exception-do
Writeln(E.ClassName,“:”,E.Message);
结束;
ReadLn;
结束。