Chapter 5. Architecture Overview

Figure 1. WikiTexi Strawman Architecture

Figure 1 shows a strawman architecture for the WikiTexi system. The following paragraphs describe at a high level the individual components of that architecture.

DocType Manager

The DocType Manager associates DTD's and XSL's with particular types of documents. The inclusion of the DocType Manager allows WikiTexi to be extensible beyond simple Docbook XML. Document authors need simply register their documents and appropriate XSLs for input and output with the DocType Manager.

RDBMS

Currently, WikiTexi assumes an RDBMS (e.g. MySQL, PostgresQL) will be available for data storage. This assumption is based on the system's reliance upon phpGroupware, which in turn depends upon an RDBMS.

Document Manager

The Document Manager acts as a facade for documents stored in the RDBMS. WikiTexi will store documents as atomically as possible to provide for history to be manageable. When the Groupware Editor or XSL Engine require access to a document or document section, the Document Manager will reconstruct it from the database (or a cache) and provide it. The document manager will also arbitrate interactions with documents stored in other WikiTexis (see ).

Groupware Editor

The Groupware Editor provides user interface for the process. The term editor is used very loosely here. This portion of the system most closely resembles Wikipedia with the addition of navigation and some tag awareness. The particulars of the interface design must be worked out.

XSL Directory

The XSL Directory associates XSLs with the XMLs they serve to translate. In a distributed processing environment, the XSL directory could serve to retrieve such XSLs from other services based on the XMLs to be translated (see ).

XSL Engine

The XSL Engine applies XSL to XML coming from or going to the Document Manager. It's highly likely an existing XSL library (e.g. libxalan) can be leveraged for this component.

Input Translator

Translates non-XML well-structured sources of document information into XML before submitting them to the XSL engine.

Output Translator

Acts as a postprocessor for the output of the XSL engine, in such specialized cases where postprocessing is necessary. (Particular examples needed, based upon what XSL can and can't do.)