Dataflow

The editor has been redesigned to take advantage of GENE. An outdated transformation model can be found at Martin Vysny's work. It includes an exact definiton of terms used in this web site, and the schema autocompletion algorithms description.

Current document dataflow is as follows:

  • Source document is transformed by GENE.
  • The GENE output is handled by a special coordinator.
  • This coordinator distributes the data between renderers (and appropriate editors), and maintains their tree hierarchy
  • EditorSite maintains and positions editors and renderers, creating and disposing editors when required.
Let's describe these steps more deeply:
  1. At the beginning, there is source document :-). This document is an in-memory (DOM) representation of loaded XML file. Every element has emp:id attribute, specifying its unique ID. This attribute should not be lost in the dataflow in order for this element to be identifiable.
  2. This document is then split into tree of nametrees. Nametree is a maximal coherent subtree of source DOM containing elements from one namespace only. In every nametree the connection point to another nametree is marked by generef processing instruction, containing ID of root node in the nametree (the nameroot). Its text value is the namespace of this nametree.
  3. Every nametree is processed by a GENE Exporter graph.
  4. All Exporter outputs are put together in the coordinator, and thus one presentation document is born, with one or more namespaces.
  5. For each nametree in this result a renderer is chosen to render it. Built-in renderers are: FOP for rendering FO documents, and Image renderer rendering Image objects.