----------------------------------------------------------------------------- xmlforms ----------------------------------------------------------------------------- THE IDEA: This example uses XML for two purposes: - The "story" and layout of the application is specified in XML - The data records are stored in XML An "application" is a set of "masks" or sequences of masks, and every mask is thought as a visible page of the application, containing layout elements and functional elements. Layout is specified in TeX-style using hboxes, vboxes, hspaces, vspaces. Functional elements are "entries" (input box for a string with one line), "textboxes" (input boxes with several lines), and buttons. See styles/ds-style.dtd for the DTD of an application specification, and the other xml files in this directory for examples. The entries and textboxes are bound to "slots", i.e. string variables. If the application is started, the slots are read from a file, and if the user presses a special "save" button, the slots are stored into this file. The format of this data file is again XML; the simplistic DTD can be found in styles/ds-object.dtd. THE IMPLEMENTATION: There is currently a mapping of the specifications to ocamltk, done by a program called "xmlforms". HOW TO COMPILE: It is assumed that "findlib" is present on your system; see ABOUT-FINDLIB in the toplevel directory. The "markup" module must have been installed. - "make xmlforms" produces a bytecode executable "xmlforms" - "make xmlforms.opt" produces a native executable "xmlforms.opt" Note that you cannot start the executables directly: HOW TO START AN APPLICATION: As "xmlforms" is a generic executable, there is a simple mechanism to bind it to a specific instance of an application. For example, in the "styles" subdirectory there is the application specification "crazy-style.xml". To start it, make a symlink called "crazy" referring to the "xmlforms" binary, set the environment variable DATASHEETS to the directory where the DTDs and XML files can be found, and start "crazy": ln -s ../xmlforms crazy DATASHEETS=. crazy my-record.xml (If you do not set DATASHEETS, a default directory, normally "/opt/xmlforms/lib" is used.)