Ver Mensaje Individual
  #2  
Antiguo 09-03-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita