|  | 
	      What I expected to find in an XMLForms implementation
	      for Cocoon was about this:
	     
	      
		Some generator produces XML that includes one or more
		XForms models and XForms UI elements. (The instance
		data in the model may have been derived from a
		JavaBean, but could also be taken from another source,
		such as an XML DB.)
	      
		An XForms initial-transformer reads this XML. It
		extracts the XForms:model, builds a DOM tree and
		triggers the initialization events. It saves the
		received SAX events (minus the XForms model) and the
		DOM tree that represents the initialized model as
		session attributes with names that reflect the original request.
	      
		An XForms layout-transformer receives the XML. It
		evalutes conditional XForms elements such as the
		"switch" element using the model DOM tree from the
		session context and "prepares" the XForm Controls by
		resolving the references to the model data and
		providing the data to be displayed as some kind of
		XForm Control extension (so we need no
		"xalan:evaluate" in XSLT later).
	      
		A simple stylesheet transformation maps the "extended"
		(i.e. references to model data resolved) XForms
		Controls to e.g. HTML. All created links or actions
		include a (hidden) parameter that reflects the original request and point to
		the generator described in (5).
	      
		An XForms generator processes the user input (provided
		as request parameters). It applies the input to the
		model DOM tree found in the session context by
		updating the model instance data and triggering events
		(of course we cannot generate all events such as focus
		related events). This includes any required
		validation. If the action includes the final submit
		and validation is OK, it "redirects" the request to
		the xforms:submission (this target [maybe the same as
		the generator in (1)] is responsible for updating the
		originating JavaBean or storing the data in an XML DB
		etc.). Else it simply re-emits the events saved in (2)
		and processing continues with the transformation
		described in step (3). Saving the SAX events in (2) is
		necessary as the output generated in (1) may result
		from a post, i.e. we cannot generally call the
		generator described in (1) again (saving should be
		more efficient anyway).
	       
	      When I looked at the implementation currently under
	      development within the Coccon project, I could not
	      identify this approach.
	     
	      I do not claim to have fully understood the approach
	      taken by the Cocoon team, but from what I have
	      understood, I got the strong impression that it is not
	      as comprehensive as is required by the project that made
	      me look at XForms in the first place.
	     
	      So I decided to give the approach outlined above a try.
	     |