anchor.diff:  
   function CreateXmlFileReader(const FileName: string): IXMLReader;
   begin
  -  CreateXmlReader(XMLReaderGuid, Result, nil);
  +  CheckHR(CreateXmlReader(XMLReaderGuid, Result, nil));
     if (Result <> nil) and (FileName <> '') then
  -    Result.SetInput(OpenXmlFileStreamReader(FileName));
  +  begin
  +    CheckHR(Result.SetProperty(XmlReaderProperty_DtdProcessing, XmlDtdProcessing_Parse));
  +    CheckHR(Result.SetInput(OpenXmlFileStreamReader(FileName)));
  +  end;
   end;
   
   function CreateXmlFileWriter(const FileName: string): IXMLWriter;
   begin
  -  CreateXmlWriter(XMLWriterGuid, Result, nil);
  +  CheckHR(CreateXmlWriter(XMLWriterGuid, Result, nil));
     if (Result <> nil) and (FileName <> '') then
  -    Result.SetOutput(OpenXmlFileStreamWriter(FileName));  
  +    CheckHR(Result.SetOutput(OpenXmlFileStreamWriter(FileName)));
   end;
   
   function OpenXmlFileStreamReader(const FileName: string): IStream;
  
positive.code: function OpenXmlFileStreamReader(const FileName: string): IStream;
  function OpenXmlFileStreamWriter(const FileName: string): IStream;
  
  implementation
  
  uses Classes, SysUtils;
  
negative.code:   * XmlLite.dll is required.  It is included with all new versions of Windows, and service packs for old versions.
    * XmlReader's pull-based interface is cleaner to use than SAX's event-based interface.
    * More info: http://msdn.microsoft.com/en-us/library/ms752838%28v=VS.85%29.aspx
  
    Note: This is a minimal translation, some parts were not implemented and most are untested.
  -----------------------------------------------------------------------------}
  unit XmlLite;
  