Difference between revisions of "XDocumentation"

Line 2: Line 2:
 
==Xebra Libraries==
 
==Xebra Libraries==
 
===Page===
 
===Page===
 +
Templates are xeb files with so called regions which have to be implemented by extending xeb files. Templates are not compiled down to servlets. There are two ways of using templates: extending a template xeb or including it, while passing all the regions down.
 +
With these techniques we would be able to minimize duplicated code and hence errors in the xeb files, which are difficult to debug.
 +
 +
Example:
 +
 +
master.xeb
 +
 +
    <html>
 +
    <page:controller class="DEFAULT_CONTROLLER"/>
 +
    <body>
 +
    <h1>
 +
    <page:declare_region id="greeting" />
 +
    </h1>
 +
    <page:declare_region id="form" />
 +
    </body>
 +
    </html>
 +
 +
 +
The master page is "deferred", since there are page:declare_region tags.
 +
 +
slave1.xeb
 +
 +
    <page:include template="master">
 +
    <page:define_region id="greeting">
 +
    Hello, I'm Slave 1
 +
    </page:define_region>
 +
    <page:define_region id="form">
 +
    Other region
 +
    </page:define_region>
 +
    </page:include>
 +
 +
 +
slave2.xeb
 +
 +
    <html>
 +
    <page:controller class="SLAVE2_CONTROLLER" />
 +
    <page:include template="master"
 +
      <page:define_region id="form">
 +
        Other region 2
 +
        </page:define_region>
 +
    </page:include>
 +
    </html>
 +
 +
 +
slave3.xeb
 +
 +
    <page:include template="slave2.xeb">
 +
    <page:controller class="SLAVE2_CONTROLLER" />
 +
        <page:define_region id="greetings">
 +
        </page:define_region>
 +
    </page:include>
 +
 +
 +
This code will generate exactly three servlets, SLAVE1_SERVLET.e , SLAVE2_SERVLET.e and SLAVE3_SERVLET.e. master.xeb and form.xeb are fragments. SLAVE1_SERVLET inherits the controller from the master page, while SLAVE2_SERVLET "overwrites" this definition and uses SLAVE2_CONTROLLER. All the pages which are deferred (like master.xeb) are not compiled to servlets. Neither are pages which are denoted with the tag page:fragment.
 +
Template pages could be used to differentiate views based on roles. For instance one could think of roles like 'guest', 'user' and 'admin'. 'guest' and 'user' would then have pages which inherit from a 'master_page', implementing their own menus. 'admin' in contrast would inherit from 'user', since it is a user with additional rights. So it would have to extend the menu and contents. Sub pages which have been added through page:include could act as master pages as well, further encouraging code reuse.
 +
 +
 
===Xeb===
 
===Xeb===
 
===Form===
 
===Form===

Revision as of 15:22, 29 June 2009

Xebra Libraries

Page

Templates are xeb files with so called regions which have to be implemented by extending xeb files. Templates are not compiled down to servlets. There are two ways of using templates: extending a template xeb or including it, while passing all the regions down. With these techniques we would be able to minimize duplicated code and hence errors in the xeb files, which are difficult to debug.

Example:

master.xeb

   <html>
   <page:controller class="DEFAULT_CONTROLLER"/>
   <body>

<page:declare_region id="greeting" />

   <page:declare_region id="form" />
   </body>
   </html>


The master page is "deferred", since there are page:declare_region tags.

slave1.xeb

   <page:include template="master">
   <page:define_region id="greeting">
   Hello, I'm Slave 1
   </page:define_region>
   <page:define_region id="form">
   Other region
   </page:define_region>
   </page:include>


slave2.xeb

   <html>
   <page:controller class="SLAVE2_CONTROLLER" />
   <page:include template="master"
      <page:define_region id="form">
       Other region 2
       </page:define_region>
   </page:include>
   </html>


slave3.xeb

   <page:include template="slave2.xeb">
   <page:controller class="SLAVE2_CONTROLLER" />
       <page:define_region id="greetings">
       </page:define_region>
   </page:include>


This code will generate exactly three servlets, SLAVE1_SERVLET.e , SLAVE2_SERVLET.e and SLAVE3_SERVLET.e. master.xeb and form.xeb are fragments. SLAVE1_SERVLET inherits the controller from the master page, while SLAVE2_SERVLET "overwrites" this definition and uses SLAVE2_CONTROLLER. All the pages which are deferred (like master.xeb) are not compiled to servlets. Neither are pages which are denoted with the tag page:fragment. Template pages could be used to differentiate views based on roles. For instance one could think of roles like 'guest', 'user' and 'admin'. 'guest' and 'user' would then have pages which inherit from a 'master_page', implementing their own menus. 'admin' in contrast would inherit from 'user', since it is a user with additional rights. So it would have to extend the menu and contents. Sub pages which have been added through page:include could act as master pages as well, further encouraging code reuse.


Xeb

Form