- From: Peter Nunn <peter.nunn@vistic.net>
- Date: Tue, 13 Feb 2007 20:16:40 +1300
- To: www-forms@w3.org
- Message-ID: <45D165D8.7000709@vistic.net>
Hi Guntis,
I, like yourself have only been working actively in XForms for the past
few years, but also had issues with XForms coming from a background
where it would be sensible to add a property such as relevant and
read-only to a trigger.
My understanding and interpretation of the reasons behind this can
probably be corrected by others with more background than mine but here
is how I see it.
XForms attempts to encapsulate the Model-View-Controller architecture
that is common within the development world. As such the idea of having
a model (xforms:model, xforms:instance) seems to be easy to grasp. The
view is easy as well in an xhtml world (xf:input, xf:output, xf:trigger
etc). But where is the ** xf:controller **. To me the controller is the
<xf:bind relevant="" /> and friends as well as the <xf:action /> within
the model. Or at least that is how I write xforms. So how then to
communicate the intent of the controller to the view. By definition the
view receives its data from the model so this is the 'M-V' part. But
what if you have multiple views. I write forms that have at least 2
views per form, one is for when viewing as a css rule media="screen",
another is media="print" while others will add css for media="mobile",
or in fact the 'view' could be one of at least the 10 already defined
media types, so if there are triggers on each css rule with a
corresponding view of:
<body>
<div class="screenview">
.. all xforms controls needed for a desktop
<div>
<div class="printview">
</div>
<div class="mobile">
</div>
</body>
What about the code-bloat to which you refer. Every control (input,
output, trigger etc) will need to have the relevant or readonly or any
other mip attribute duplicated.
So given that by binding the relevancy of a control to the M-V
relationship by the controller as there may be a M-V-V-V-V-V-V-V
relationship in a complex form with many possible renderings (I have
only dealt with a M-V-V-V at the present, or M-Screen-Print-Mobile)
within a form. Being able to control each view my form can render
within with a single <bind relevant="" /> statement seems like a really
nice idea to me.
So in answer my answer to your questions is as follows:
Why bind to any node:
So you can define your own variable to control the relevance of any
control. I usually define an instance called mdlForm which has empty
nodes that are the relevance controllers:
<instance id="mdlForm">
<variables xmlns="">
<Trigger1Visisble />
</variables>
</instance>
<bind nodeset="instance('mdlForm')//Trigger1Visible" relevant="...." />
and so on.
Why not interact with form data?
A trigger initiates an event which can be used by the controller to
perform an action. The relevance is determined by the relevancy of the
node to which it is bound.
Which MIP property is relevant?
The only one which I have found to be useful in xhtml forms is relevant,
however the trigger in xhtml is normally a button, in a audio form it
could be some other type of control (voice, braille etc) so the other
MIP properties may be useful in this scenario.
I hope my interpretation of a trigger and why it is good that the
controller is separated from the view in XForms is useful, others of
course may have different reasons for the same conclusions.
Regards
Received on Tuesday, 13 February 2007 07:16:57 UTC