!!! Pure XHTML templating

[RSF] provides pure XHTML templating to the developer and the designer. This is achieved using the [IKAT] renderer which can operate standalone or as an integral part of the RSF framework.

!! Major Benefits
* Truly pure XHTML - No custom tags or tag libraries to maintain or teach to your designers
* Easy layout changes - Modifications to the page layout do not have to affect the Java source code!
* Division of labor - User experience and web designers can create XHTML mockups which become the application
* Designer focus - CSS and [AJAX] work seamlessly in the templates and can both be handled by the designer
* Valid HTML - Pages are as accessible and well formatted as your templates
* Reloadable templates - Templates can be changed and will reload automatically without webapp redeployment or server restarts

!! Sample RSF-ized XHTML template

{{{
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:rsf="http://ponder.org.uk/rsf" xmlns="http://www.w3.org/1999/xhtml">
<head>
   <title>RSF sample</title>
</head>
<body>
   <h1 rsf:id="user-name">Hello UserName</h1>
   <span rsf:id="current-date">Today is 1/1/2006</span><br/>
   <table>
      <tr rsf:id="item-row:">
        <td rsf:id="item-value">item value here</td>
      </tr>
   </table>
</body>
</html>
}}}

* No custom tags, only 1 custom attribute, the __rsf:id__
* Uses convention over configuration for rsf:ids
** string indicates a standard rsf:id which causes dynamic information to be placed in a view (e.g. user-name)
** string with ":" indicates a loop structure (i.e. branch container) (e.g. item-row:)
** string preceded with "scr=" indicates a custom RSF processing action (e.g. scr=portal-matter)

!! Benefits in depth

! Truly pure XHTML
* No custom tags or tag libraries to maintain or teach to your designers
* Only 1 custom attribute, the __rsf:id__, which can be placed on any HTML tag
** __NOTE:___ rsf:ids will NOT appear in the the HTML sent to the user, only in your functional templates
* Custom DTD {{{ xmlns:rsf="http://ponder.org.uk/rsf" }}} you can optionally use if you do not want to be warned about the rsf:id attributes by a validator

! Easy layout changes
* Modifications to the page layout do not have to affect the Java source code!
* Designers can adjust the UI without developers having to get involved
** As long as the data on the page remains consistent your designers can continue to do layout tweaks

! Division of labor
* User experience and web designers can create XHTML mockups which become the application
* Developers take the mockups and turn them in a functional app by creating RSF producers to handle rendering logic and standard Java beans to handle processing
* Designers can then update templates (possibly even while developers are working on the Java code)
* The rsf:ids become a "common laguage" which the designers and developers use to refer to dynamic content

! Designer focus
* CSS and [AJAX] work seamlessly in the templates and can both be handled by the designer
* Easy to modify template using Dreamweaver or your favorite HTML editor
** No custom editing environments to learn or install

! Valid HTML
* RSF enforces properly formatted XML in templates and provides detailed messages which indicate where improperly formatted lines occur
* Pages are as accessible and well formatted as your templates

! Reloadable templates
* Templates can be changed and will reload automatically without webapp redeployment or server restarts
* Minor corrections to errors on pages can be made quickly and easily
* Designers can adjust working apps in real time in response to user needs