===============================================================
! The HTML Form symmetry loop is closed: !
===============================================================
HTML Forms <-> XPath <-> JavaBeans <-> XML -> Schematron -> HTML Forms
===============================================================

Just released the next version of the symmetric Form binding and validation
toolkit ( a CocoonBlock wannabe :).
In addition to the form-binding it now has integrated Schematron validation
support.

The zip file can be downloaded from:
http://prdownloads.sourceforge.net/freebuilder/CocoonForm_0-6.zip

With this in place one can provide form binding with just a few lines of
code (~5 lines) and Sophisticated form validation with 0! lines of Java
code.

Let me walk you quickly through the sitemap of the example provided in the
distribution:

#########
#sitemap:#
########
...

 <map:pipelines>
  <map:pipeline>
   <map:match pattern="*">
1.    <map:act type="FormBinderAction"/>           <!-- ### Uses The
FormBeanBinder tool to bind the html form elements to an underlying JavaBean
model through XPath based form element names -->
2.    <map:generate src="insertFormBean.xml"/>  <!--  ### This is a very
short
files simply inserting the form bean    -->
3.    <map:transform type="castor"/>                <!-- ###
CastorTransformer converts the bean into an XML stream -->
4.    <map:transform src="schematron/xmlform-sch-report.xsl"/> <!-- ### A
Schematron schema validates the form and adds the validation results in the
stream, while preserving the original form stream -->
5.    <map:transform src="formbean2html.xsl"/>   <!-- ### Renders the HTML
file
using the XML form and the validation errors from the input document -->
    <map:serialize type="html"/>
   </map:match>
  </map:pipeline>
 </map:pipelines>
...

######################
#xmlform-sch-report.xml: #
######################

The validation schema is really simple and intuitive. The one in the example
is over simplified.
Schematron however supports i18n and validation in phases (useful for
wizards).

...
<schema ns="http://xml.apache.cocoon/xmlform";
xmlns="http://www.ascc.net/xml/schematron";>
 <title>Schema for the XML Form example</title>
 <pattern name="A Simple Form Validation Pattern">
  <rule context="name">
   <assert  test="string-length(.) > 3">Animal name should be at least 4
characters.</assert>
   <assert  test="string-length(.) &lt; 10">Animal name should be less than
10 characters.</assert>
  </rule>
  <rule context="scope">
   <assert test="normalize-space(.) = 'session' or normalize-space(.) =
'request'">Scope should be request or session.</assert>
  </rule>
 </pattern>
</schema>

=====================================

That's all folks !

All sources and xml documents are provided in the example.

I will be working with Torsten on a more sophisticated wizard example
and a best practices document.

Cocoon is really close to becoming a full-blown web-app server,
which enforces a pure separation in BOTH directions !

I know everyone on this team is extremely busy, but even one line feedback
is of great help for me, so

Feedback please !

Cheers,

Ivelin















---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to