xsd2pas.pas 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. program xsd2pas;
  2. {$mode objfpc}{$H+}
  3. uses
  4. cwstring, Classes, SysUtils, sdo, sdo_datafactory, sdo_xsdintf,
  5. sdo_xsd_helper, xsd_generator, pas_generator;
  6. procedure LoadSchemaFile(AFactory : ISDODataFactory; AFileName : string);
  7. var
  8. xsdHelper : IXSDHelper;
  9. begin
  10. try
  11. xsdHelper := TXSDHelper.Create(AFactory);
  12. xsdHelper.LoadFromFile(AFileName);
  13. except
  14. On E : exception do
  15. begin
  16. E.Message:='Load failed'+E.Message;
  17. raise;
  18. end;
  19. end;
  20. end;
  21. procedure CreatePascalCode(AFactory : ISDODataFactory; AFileName : string);
  22. var
  23. xsdHelper : IXSDHelper;
  24. begin
  25. xsdHelper := TXSDHelper.Create(AFactory);
  26. try
  27. xsdHelper.GenerateCode(AFactory.getTypes(),'urn:wst-test',AFileName);
  28. except
  29. On E : exception do
  30. begin
  31. E.Message:='Generate failed'+E.Message;
  32. raise;
  33. end;
  34. end;
  35. end;
  36. procedure MainProc;
  37. var
  38. fact : ISDODataFactory;
  39. begin
  40. Fact:=TSDODataFactory.Create();
  41. Writeln('Handling ',ParamStr(1));
  42. LoadSchemaFile(Fact,ParamStr(1));
  43. CreatePascalCode(Fact,'myunit');
  44. end;
  45. begin
  46. MainProc;
  47. end.