XMLLoader.Mod 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. MODULE XMLLoader; (** Stefan Walthert *)
  2. (** AUTHOR "swalthert"; PURPOSE ""; *)
  3. IMPORT
  4. Files, XML, XMLGeneratorSchema, XMLScanner, XMLParser, CSS2, CSS2Scanner, CSS2Parser, XMLStyle;
  5. CONST
  6. DefaultXMLGeneratorFile* = "DefaultXGS.xml";
  7. DefaultCSS2File* = "DefaultCSS2.css";
  8. VAR
  9. DefaultXMLElementRegistry-: XML.ElementRegistry;
  10. DefaultStyleSheet-: CSS2.StyleSheet;
  11. PROCEDURE LoadCSS*(cssName: ARRAY OF CHAR): CSS2.StyleSheet;
  12. VAR cssFile: Files.File; cssScanner: CSS2Scanner.Scanner; cssParser: CSS2Parser.Parser;
  13. BEGIN
  14. cssFile := Files.Old(cssName);
  15. IF cssFile = NIL THEN cssFile := Files.Old(DefaultCSS2File)
  16. END;
  17. IF cssFile = NIL THEN RETURN NIL
  18. ELSE NEW(cssScanner, cssFile); NEW(cssParser, cssScanner); RETURN cssParser.Parse()
  19. END
  20. END LoadCSS;
  21. PROCEDURE LoadXML*(xmlName: ARRAY OF CHAR): XML.Document;
  22. VAR xmlFile: Files.File; xmlScanner: XMLScanner.Scanner; xmlParser: XMLParser.Parser;
  23. reader: Files.Reader;
  24. BEGIN
  25. xmlFile := Files.Old(xmlName);
  26. IF xmlFile = NIL THEN RETURN NIL
  27. ELSE NEW(reader, xmlFile, 0); NEW(xmlScanner, reader); NEW(xmlParser, xmlScanner); RETURN xmlParser.Parse()
  28. END
  29. END LoadXML;
  30. PROCEDURE LoadComponents*(xmlName, generatorSchemaName: ARRAY OF CHAR): XML.Document;
  31. VAR xmlFile: Files.File; xmlScanner: XMLScanner.Scanner; xmlParser: XMLParser.Parser;
  32. reader: Files.Reader;
  33. BEGIN
  34. xmlFile := Files.Old(xmlName);
  35. IF xmlFile = NIL THEN RETURN NIL
  36. ELSE
  37. NEW(reader, xmlFile, 0);
  38. NEW(xmlScanner, reader); NEW(xmlParser, xmlScanner);
  39. xmlParser.elemReg := XMLGeneratorSchema.OpenGeneratorSchema(generatorSchemaName);
  40. IF xmlParser.elemReg = NIL THEN xmlParser.elemReg := DefaultXMLElementRegistry END;
  41. RETURN xmlParser.Parse()
  42. END
  43. END LoadComponents;
  44. PROCEDURE Load*(xmlName, cssName, generatorSchemaName: ARRAY OF CHAR): XML.Document;
  45. VAR xml: XML.Document; css: CSS2.StyleSheet;
  46. BEGIN
  47. xml := LoadComponents(xmlName, generatorSchemaName); css := LoadCSS(cssName);
  48. IF xml = NIL THEN RETURN NIL
  49. ELSE XMLStyle.AttachStyle(xml.GetRoot(), css); RETURN xml
  50. END
  51. END Load;
  52. PROCEDURE SetDefaultXMLElementRegistry*(generatorSchemaName: ARRAY OF CHAR);
  53. BEGIN
  54. DefaultXMLElementRegistry := XMLGeneratorSchema.OpenGeneratorSchema(generatorSchemaName)
  55. END SetDefaultXMLElementRegistry;
  56. PROCEDURE SetDefaultStyleSheet*(cssName: ARRAY OF CHAR);
  57. BEGIN
  58. DefaultStyleSheet := LoadCSS(cssName)
  59. END SetDefaultStyleSheet;
  60. BEGIN
  61. DefaultXMLElementRegistry := XMLGeneratorSchema.OpenGeneratorSchema(DefaultXMLGeneratorFile);
  62. DefaultStyleSheet := LoadCSS(DefaultCSS2File)
  63. END XMLLoader.