Supongo que ya has resuelto esto, pero es que yo me acabo de topar con el problema de la validación. Intenté usar un XmlDocument y funciona bien para validar un Xml contra un DTD, pero, al parecer, al menos con Delphi 7, no funciona para un esquema XSD.
Buscando en varios lados he logrado hacer esta pequeña herramienta que parece funcionar:
Código Delphi
[-]
program XmlValidator;
{$APPTYPE CONSOLE}
uses SysUtils, ActiveX, ComObj;
var
FileName: String;
XmlDom: OleVariant;
begin
WriteLn('XmlValidator Version 1.0');
WriteLn;
if ParamCount() > 0 then
begin
CoInitialize(nil);
FileName := ParamStr(1);
XmlDom := CreateOleObject('MsXml2.DomDocument.4.0');
XmlDom.Async := false;
XmlDom.ValidateOnParse := true;
XmlDom.ResolveExternals := true;
XmlDom.Load(FileName);
if XmlDom.ParseError.ErrorCode <> 0 then
WriteLn(Format('%s(%s) Error: %s', [
ExtractFileName(FileName),
XmlDom.ParseError.Line,
XmlDom.ParseError.Reason
]));
end;
end.
Es una herramienta de consola pero se puede adaptar a otras cosas.
// Saludos