TestXMLPlugins.Mod 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. MODULE TestXMLPlugins; (** AUTHOR "Simon L. Keel"; PURPOSE "example-plugins for the XMLTransformer"; *)
  2. IMPORT
  3. XMLTransformer, Strings, XML, WebBrowserComponents;
  4. TYPE
  5. String = Strings.String;
  6. VAR
  7. newLine : ARRAY 3 OF CHAR;
  8. PROCEDURE A*(elem : XML.Element) : XML.Container;
  9. VAR
  10. container : XML.Container;
  11. p, sp : XML.Element;
  12. cdata : XML.CDataSect;
  13. s : String;
  14. BEGIN
  15. NEW(container);
  16. p := XMLTransformer.GetNewParagraph("Center");
  17. sp := XMLTransformer.GetNewSpan("Assertion");
  18. NEW(cdata);
  19. s := Strings.ConcatToNew("This is example-output of BB:A tag", newLine);
  20. cdata.SetStr(s^);
  21. sp.AddContent(cdata);
  22. p.AddContent(sp);
  23. container.AddContent(p);
  24. RETURN container;
  25. END A;
  26. PROCEDURE AB*(elem : XML.Element) : XML.Container;
  27. VAR
  28. container : XML.Container;
  29. e : XML.Element;
  30. BEGIN
  31. NEW(container);
  32. NEW(e); e.SetName("BB:A");
  33. XMLTransformer.AddContentsOf(XMLTransformer.Transform(e), container);
  34. XMLTransformer.AddContentsOf(XMLTransformer.TransformElemsIn(elem), container);
  35. NEW(e); e.SetName("BB:B");
  36. XMLTransformer.AddContentsOf(XMLTransformer.Transform(e), container);
  37. RETURN container;
  38. END AB;
  39. PROCEDURE B*(elem : XML.Element) : XML.Container;
  40. VAR
  41. container : XML.Container;
  42. p, sp : XML.Element;
  43. cdata : XML.CDataSect;
  44. s : String;
  45. BEGIN
  46. NEW(container);
  47. p := XMLTransformer.GetNewParagraph("Left");
  48. sp := XMLTransformer.GetNewSpan("Preferred");
  49. NEW(cdata);
  50. s := Strings.ConcatToNew("This is example-output of the BB:B tag", newLine);
  51. cdata.SetStr(s^);
  52. sp.AddContent(cdata);
  53. p.AddContent(sp);
  54. container.AddContent(p);
  55. RETURN container;
  56. END B;
  57. PROCEDURE PICT*(elem : XML.Element) : XML.Container;
  58. VAR
  59. container : XML.Container;
  60. p, o : XML.Element;
  61. img : WebBrowserComponents.StretchImagePanel;
  62. BEGIN
  63. NEW(container);
  64. p := XMLTransformer.GetNewParagraph("Left");
  65. NEW(o);
  66. o.SetName("Object");
  67. NEW(img, NIL, Strings.NewString("file://BluebottlePic0.png"), -1, -1);
  68. o.AddContent(img);
  69. p.AddContent(o);
  70. container.AddContent(p);
  71. RETURN container;
  72. END PICT;
  73. BEGIN
  74. newLine[0] := 0DX; newLine[1] := 0AX; newLine[2] := 0X;
  75. END TestXMLPlugins.
  76. XMLTransformer.Register A TestXMLPlugins.A ~
  77. XMLTransformer.Register AB TestXMLPlugins.AB ~
  78. XMLTransformer.Register B TestXMLPlugins.B ~
  79. XMLTransformer.Register PICT TestXMLPlugins.PICT ~
  80. Example-HTML-File:
  81. <html>
  82. <body background="paper.gif">
  83. <h1>XML-Transfomer-Demo</h1>
  84. <h2>The BB:A tag</h2>
  85. <BB:A />
  86. <hr>
  87. <h2>The BB:B tag</h2>
  88. <BB:B />
  89. <hr>
  90. <h2>The BB:PICT tag</h2>
  91. <BB:PICT />
  92. <hr>
  93. <h2>The BB:AB tag when empty</h2>
  94. <BB:AB />
  95. <hr>
  96. <h2>The BB:AB tag when containing a BB:PICT tag</h2>
  97. <BB:AB>
  98. <BB:PICT />
  99. </BB:AB>
  100. <hr>
  101. </body>
  102. </html>