Other Concepts

XOE makes intensive use of XML as external data format for views (XHTML documents), configuration (e.g. tag-to-Java bindings), application data (i.e. address-book entries), package description (package.xml meta data), and communication (SOAP messages). At runtime, most of this data is stored in DOM trees, and accessed via XPath queries.

This scheme is consistently used for framework internal functions like package lookup, as well as for application specific data. Since XPath queries are symbolic expressions, they can be easily specified in the context of application documents (*.xhtml files). The symbolic nature of the lookup also makes XOE much less vulnerable against data format changes than traditional (object based) systems, which is esp. useful for networked applications, obtaining data from external (and potentially varying) sources.

Based on this data handling scheme, XOE uses a storage concept called Stash, which acts as a virtual filesystem. Data items stored in the stash can be identified via URLs, and are DOM nodes of a generic ContentElement type. This class is the key to a content type system, which enables lookup of suitable services to handle specific content based on document specific namespaces, mime-types, or simple suffixes. The service lookup itself is performed via a global ServiceLocator registry. Failure to retrieve a service via the ServiceLocator in turn is used to trigger the PackageManager, to identify and install suitable packages via the XOE package management system.

The display system of XOE is also based on installable services, more specifically on a sub-category called IViewableDocumentBuilder. Implementors of this interface transform ContentElement based DOM input documents into ViewableDocument instances , to be subsequently rendered with specialized DocumentViewer instances. This process might involve layout specific re-structuring of documents, using viewer specific node types. By means of this abstraction, the framework can not only deal with a broad range of document types (wml, xhtml, html, application-specific xml etc.), but can also be extended to transform documents into the most suitable rendering scheme for a particular device (e.g. html input into wml-like output). In fact, a browser application can start as a simple WML browser, to be automatically expanded into a full HTML browser via XOE packages which are installed on demand (when viewing an HTML document).