The SAX Events will fire all the information
for the document with start element, end element, text data etc. This
information is used to build up a representation of the FO document. To do this
for a namespace there is a set of element mappings. When an element + namepsace
mapping is found then it can create an object for that element. If the element
is not found then it creates a dummy object or a generic DOM for unknown
namespaces.
The object is then setup and then given attributes for the element.
For the FO Tree the attributes are converted into properties. The FO objects
use a property list mapping to convert the attributes into a list of properties
for the element. For other XML, for example SVG, a DOM of the XML is
constructed. This DOM can then be passed through to the renderer. Other element
mappings can be used in different ways, for example to create elements that
create areas during the layout process or setup information for the renderer
etc.
While the tree building is mainly about creating the FO Tree
there are some stages that can propagate to the renderer. At
the end of a page sequence we know that all pages in the
page sequence can be laid out without being effected by any
further XML. The significance of this is that the FO Tree
for the page sequence may be able to be disposed of. The
end of the XML document also tells us that we can finalise
the output document. (The layout of individual pages is
accomplished by the layout managers page at a time;
i.e. they do not need to wait for the end of the page
sequence. The page may not yet be complete, however,
containing forward page number references, for example.)