Synex ViewPort handles six types of data objects:
A Document Type Definitionor DTDis normally an integral part of an SGML document. However, Synex ViewPort is also capable of preloading DTDs, reusing them from one document to another in order to improve performance.
The SGML document is the core on which Synex ViewPort is built. Since an SGML document in itself is only structured data, an SGML browser needs additional information in order to display and navigate the document.
A Style Sheet is a set of formatting rules, a mapping from SGML elements to formatting specifications. The style sheets not only support content formatting such as font specification, position, spacing, and justification, but also content hiding, autonumbering, engineering math (such as fractions, radicals and indices), leading, rulers, change bars, and CALS tables. In fact, any element structure can be formatted as a tablewith or without the table gridand any element can be hidden behind an icon, revealed when the user clicks on it.
The style sheet is independent of the document: Several documents can share a single style sheet, and one document can use several style sheets. Style sheets are stored as SGML documents.
A Navigator allows any document element to be extracted and assembled into an active table of contents view. The extracted elements maintain their original order and hierarchy in the SGML document; if a navigational element has navigational child elements, these will still remain child elements among the extracted elements.
Like style sheets, navigator definitions are stored as SGML documents.
A Web is a container of anchors and links. An anchor is either attached to a textual span of a document or to a region of a graphic (a hot spot). The anchor can contain an annotation and serve as a bookmark. A link connects two anchors.
When a web is mounted, anchors are automatically attached to open documents and displayed as clickable icons. When the web is dismounted, all related icons disappear. Several webs can be mounted simultaneously.
The concept of storing anchors and links in webs instead of as markup in the main document opens a number of interesting possibilities. For instance, it allows you to:
The last two items opens a vista of new possibilities in electronic review. Since the webs use HyTime addressing concepts, the underlying documents can even be edited without the anchor locations necessarily being affected adversely.
Like style sheets and navigators, webs are stored as SGML documents. (The web file is in fact a HyTime document).
Notation data is normally not SGML, but externally stored data such as graphics, audio, or video. Synex ViewPort has a limited built-in support for notation datafor instance for displaying GIF graphicsbut its mechanism is very extensible. Synex ViewPort can launch external applications to view the data, generate callbacks to the main application, and offers an interface to register and use external graphics interpreters, allowing graphics to be displayed inline.
All SGML objects are input to Synex ViewPort through the SGML parser,
which is optimized for speeda necessity for direct viewing of unprocessed SGML.
Style sheets, navigators, and webs are immediately converted into their internal
representations. SGML documents are combined with style sheets into document views
by the formatter. The formatter also uses navigators to create navigational views.
The Monitor combines the document and navigator views with the anchors of all mounted webs into page layouts. The layouts are either passed on to the screen renderer or to the hardcopy generator. All references to notation data are resolved and brought in without parsing. The monitor either handles the data itself, launches external applications, or passes it on to the main application.
The monitor is controlled by input from the main application and the end user, and reports state changes back to the application by invoking callbacks. The callbacks also allow engine customization.
This figure summarizes Synex ViewPort's data processing:

Data processing in Synex ViewPort
The illustration is intentionally very simplified, and several key components of Synex ViewPort are not included. These will be introduced in the next section.