Figure 1 shows a strawman architecture for the WikiTexi system. The following paragraphs describe at a high level the individual components of that architecture.
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.
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.
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 ).
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.
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 ).
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.
Translates non-XML well-structured sources of document information into XML before submitting them to the XSL engine.
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.)