Class WbzContainer

Object
   |
   +--WbzContainer

class WbzContainer

WbzContainer allows the embedding views into an host language lile HTML or XUL. There is no equivalent in XSLT. In XSLT these elements can be written in the so called template-bodies under the most elements (see XSLT-specification). Wobzilla can also use this notation, by transparently wrapping those elements under an WbzContainer see below.

Embedding of components into a host-language

Enables the use of templates in Wobzilla. The following examples shows the embedding into a HTML-Table:

<wbz:container>
 <html:table>
  <html:tr>
   <html:td>firstname:</html:td>
   <html:td><wbz:value-of select="@firstname"/></html:td>
  </html:tr>
  <html:tr>
   <html:td>Lastname:</html:td>
   <html:td><wbz:value-of select="@lastname"/></html:td>
  </html:tr>
 </html:table>
</wbz:container>

Aggregation of multiple views

WbzContainer kann dazu verwendet werden, um mehrere views zusammenzupacken. Das macht die Verarbeitung von views für andere Komponenten einfacher. Diese müssen jetzt statt mehrerer views nur einen Container als Unter-view verwalten. Den Komponenten steht es frei, einen wbz:container automatisch zu erzeugen, falls mehr als eine view-Konfiguration oder ein Element, das nicht zum wbz:name-space gehört, gefunden werden. Die von Wobzilla bereitgestellten Basis-Komponenten nehmen diese Ersetzung automatisch vor, um die Verwendung für den Ersteller des Stylesheets transparent zu halten. So kann die gewohnte XSLT-Schreibweise ohne Container-Anweisung verwendet werden. In den Beispielen in diesem und im nächsten Kapitel wird aber die Container-Schreibweise beibehalten, da sie das Zusammenspiel der einzelnen Komponenten verdeutlicht.

Use of local variables

Variablen-Anweisungen müssen immer am Anfang des Containers stehen. Findet der container eine variable Anweisung, dann erzeugt er einen entsprechenden view (WbzValueOf), initialisiert diesen aber nicht mit einem Knoten aus dem Ausgabebaum, sondern einem leeren Knoten ohne Vaterelemente. WbzValueOf schreibt in diesen Knoten dann den Variableninhalt. Danach wird der Inhalt der Variablen im Kontextobjekt wobzilla.local unter dem Namen, der im name-Attribut angegeben wurde, abgelegt. Alle folgenden Unterviews werden nun mit dem veränderten Unterkontext initialisiert.

Wird die requery-Methode des Containers aufgerufen, dann werden zuerst die requery-Methoden der Variablen aufgerufen. Wenn mindestens eine Variable den Inhalt des ihr zugeordneten Textknotens verändert, müssen alle anderen Unterkomponenten neu erzeugt werden, weil sich deren Kontext geändert hat.


Requires:
wobzilla_xpath
wobzilla_variableFactory
wobzilla_componentFactory