private
FSchemaFileName: string;
FXmlFileName: string;
end;
uses
XMLDoc, XMLIntf, XMLValidate;
resourcestring
RsValidateOk = 'Document validated without errors.';
{$R *.dfm}
procedure TMainForm.FormShow(Sender: TObject);
begin
FontEdit1Accept(nil);
end;
procedure TMainForm.XmlFileOpen1BeforeExecute(Sender: TObject);
begin
XmlFileOpen1.Dialog.FileName := '';
end;
procedure TMainForm.SchemaFileOpen1BeforeExecute(Sender: TObject);
begin
SchemaFileOpen1.Dialog.FileName := '';
end;
procedure TMainForm.XmlFileOpen1Accept(Sender: TObject);
begin
FXmlFileName := XmlFileOpen1.Dialog.FileName;
XmlFileEdit.Lines.LoadFromFile(FXmlFileName);
PageControl.ActivePageIndex := 0;
end;
procedure TMainForm.SchemaFileOpen1Accept(Sender: TObject);
begin
FSchemaFileName := SchemaFileOpen1.Dialog.FileName;
SchemaEdit.Lines.LoadFromFile(FSchemaFileName);
PageControl.ActivePageIndex := 1;
end;
procedure TMainForm.FontEdit1Accept(Sender: TObject);
begin
XmlFileEdit.Font := FontEdit1.Dialog.Font;
SchemaEdit.Font := FontEdit1.Dialog.Font;
end;
procedure TMainForm.FormatXmlAction1Update(Sender: TObject);
begin
FormatXmlAction1.Enabled := ActiveControl is TRichEdit;
end;
procedure TMainForm.FormatXmlAction1Execute(Sender: TObject);
begin
with ActiveControl as TRichEdit do
Lines.Text := FormatXMLData(Lines.Text);
end;
procedure TMainForm.ValidateContent1Execute(Sender: TObject);
var
Doc: IXMLDocument;
begin
Doc := LoadXMLData(XmlFileEdit.Lines.Text);
ValidateXMLDoc(Doc, FSchemaFileName, '');
Application.MessageBox(PChar(RsValidateOk), PChar(Caption), MB_OK or MB_ICONINFORMATION);
end;
procedure TMainForm.ValidateContent1Update(Sender: TObject);
begin
ValidateContent1.Enabled := (XmlFileEdit.GetTextLen > 0) and FileExists(FSchemaFileName);
end;
Gives me "It is an error to mix objects from different versions of MSXML" on "MsxmlDoc.schemas := SchemaCache;" Fallowing code can be downloaded at Embarcadero http://cc.embarcadero.com/Item/19688
This is XSD I use https://www.swedbank.lt/files/PDF/Swedbank_e-invoice_lt_1.1.xsd and this is XML I use just to test things https://msdn.microsoft.com/en-us/library/ms762271(v=vs.85).aspx
How do I validate XML against XSD?