1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| procedure TForm1.actValiderSchemaExecute(Sender: TObject);
var
vXSDFileName,
vXMLFileName: string;
begin
if mmXML.Modified or docXML.IsEmptyDoc then
docXML.XML := mmXML.Lines;
if mmXSD.Modified or docXSD.IsEmptyDoc then
docXSD.XML := mmXSD.Lines;
// Afin d'obtenir le n° de ligne/caractère en cas d'erreur
// on utilise ValidateXMLFileName() (avec des fichiers temporaires)
try
vXSDFileName := IncludeTrailingPathDelimiter(GetTempDir)+'temp.xsd';
mmXSD.Lines.SaveToFile(vXSDFileName);
vXMLFileName := IncludeTrailingPathDelimiter(GetTempDir)+'temp.xml';
mmXML.Lines.SaveToFile(vXMLFileName);
ValidateXMLFileName(vXMLFileName, vXSDFileName, '');
MessageDlg('Document XML conforme au schéma.', mtInformation, [mbOK], 0)
except
on E: EXMLDOMValidationError do
begin
pgCtrlPrincipal.ActivePage := tabXML;
with E do
begin
FLigneEnErreur := Line;
mmXML.CaretY := Line;
mmXML.CaretX := LinePos;
mmXML.Repaint;
end;
raise;
end;
end;
end; |
Partager