Wobzilla consists of two different facets.

On one hand Wobzilla is a component-framework, thats based on Clemens Szyperski:

A dedicated and focused architecture, usually around a few key mechanisms, and a fixed set of policies for mechanisms at the component level. (Wobzilla focuses on the creation of form and content-editors)

On the other hand wobzilla provides a set of components for the creation of rich graphical user interfaces. These components are further diveded by their usage.

First there are the mapper-components. Combined, they provide most of the functionality of a XSLT-Processor and allow a constant synchronisation between source and output-document.

In addition Wobzilla provides a set of manipulation-components. They allow the manipulation of the source-document. Typical components in this category are input-fields or tables.

Framework Overview

The component architecture of wobzilla is based on Apache Avalon framework. Parts of avalon were ported to JavaScript within the scope of Wobzilla. A short introduction about the use of avalon and the core concepts of the framework is available under "How the wobzilla framework works".

The kernel of wobzilla is WobzillaEngine. It initializes the main-window, the debugging-mechanisms and the basic menus. It provides a set of basic services like loading and storing documents or undo/redo functionality. See WobzillaEngine for a full list of the provided services.

Mapper (XSLT) Components

The configuration of the mapping components can be written in a way that is according to the XSLT-specification. Only the namespaces are different. Use xmlns:wbz="http://wobzilla.sf.net/views" instead of xmlns:xsl="http://www.w3.org/1999/XSL/Transform".

There are shortcuts for each mapper-component named by the xslt-equivalent. So in most cases simply replacing xsl: with wbz: will do the job. For instance write <wbz:apply-templates select="title"/> instead of <xsl:apply-templates select="title"/>.

The following table provides an overview of the supported XSLT-language elements. Note that not all XSLT-elements are supported. Some elements like xsl:output don't make sense in the Wobzilla-context. Others like xsl:attribute and xsl:elements still have to many implications for a simple implementation.

XSLT-elementname corresponding wobzilla-component
embedding into a host-language WbzContainer
<xsl:stylesheet> WbzMapper
<xsl:template> configuration of WbzMapper
<xsl:import> configuration of WbzMapper
<xsl:apply-templates> WbzApply
<xsl:apply-imports> WbzApply
<xsl:call-template> WbzApply
<xsl:for-each> WbzApply
<xsl:sort> configuration of WbzApply. Handled with the wobzilla.sortFactory service of WbzMapper.
<xsl:if> WbzChoose
<xsl:choose> WbzChoose
<xsl:when> and
configuration of WbzChoose
<xsl:value-of> WbzValueOf
<xsl:param> and
Handled with the wobzilla.variableFactory. Used in WbzContainer, WbzMapper and WbzApply.
<xsl:value-of> WbzValueOf

Manipulation Components

As the name suggests, this components allow the manipulation of the data-document, and thus indirectly the alteration of the view-tree which is created as a result of an evaluation of template-rules on the data-document.

Function wobzilla-component
Editing Text-field like html:input and html:textarea WbzTextField
Editable lists, tables, trees and selecting of detail-views. WbzRepeat
Component for simple alternatives (simplified WbzRepeat) WbzChoice