- From: John Boyer <JBoyer@PureEdge.com>
- Date: Mon, 4 Apr 2005 17:00:18 -0700
- To: "Klotz, Leigh" <Leigh.Klotz@xerox.com>, <jeacott@hardlight.com.au>, "Alexander Anokhin" <ava@vaz.ru>
- Cc: <www-forms@w3.org>
As I see it, though, one problem with that approach is that it is too coarse grain. The conditional execution really needs to be coming from XForms because what is frequently needed is the ability to optionally run one (or more) of several actions in the handler for an event. It would be hacky to have to handle these cases as dispatch actions. For example, there is already some conditionality in certain XForms actions, and it is quite useful. I have a table-based form in which the 'delete row' button should always set the focus back to the table, but can do one of two things: 1) Let the delete nodeset be empty if the last row. 2) Always delete, but if the last relevant row was deleted, only then insert from a non-relevant row containing prototypical instance data. Note that this latter approach is *the only way* to sensibly manage the outer-repeat of a two-level table. When a delete or insert action has an empty nodeset, they no-op. Since the nodeset is expressed as XPath, you can do a pretty good job of defining conditional execution for these two actions. And, as stated above, there are real cases where we need to conditionally execute just these actions within a larger stream of actions in a single handler. Cheers, John Boyer, Ph.D. Senior Product Architect and Research Scientist PureEdge Solutions Inc. -----Original Message----- From: www-forms-request@w3.org [mailto:www-forms-request@w3.org]On Behalf Of Klotz, Leigh Sent: Monday, April 04, 2005 4:47 PM To: jeacott@hardlight.com.au; Alexander Anokhin Cc: www-forms@w3.org Subject: RE: xforms:choose/if? I think an XSLT-like choose/when for XML Events handlers would be great. I don't see it in the XForms 1.1 requirements document, but as Mark Birbeck said, I would find it most welcome coming from an XML Events 2 recommendation. Leigh. -----Original Message----- From: www-forms-request@w3.org [mailto:www-forms-request@w3.org] On Behalf Of Jason Eacott Sent: Friday, April 01, 2005 1:09 AM To: Alexander Anokhin Cc: www-forms@w3.org Subject: Re: xforms:choose/if? that's a lot of messing about to achieve a simple 'if then else' huh. I really hope that a better way becomes available soon. Date sent: Fri, 01 Apr 2005 11:23:32 +0500 From: Alexander Anokhin <ava@vaz.ru> Send reply to: ava@vaz.ru Organization: AVTOVAZ JSC To: Mark Birbeck <mark.birbeck@x-port.net> Copies to: www-forms@w3.org Subject: Re: xforms:choose/if? Forwarded by: www-forms@w3.org Date forwarded: Fri, 01 Apr 2005 06:24:53 +0000 > > Mark Birbeck: > > Alexander, > > > > The only way you can do this *today* is with a little bit of script (see > > below). > > > > For the future, some work has been done in XML Events 2 to provide > > conditional event handlers, which would do pretty much what you want... > > > If someone interested in, the way i choose to realize such thing (thanx > to Giovanni Motta for idea) > > I've made an additional instance wich is contains one copy of > "count_result" for every condition, like this: > <xforms:instance id="choose"> > <data xmlns=""> > <eq0>84</eq0> > <eq1>84</eq1> > <gt1>84</gt1> > </data> > </xforms:instance> > > ...add binds and event handlers: > > <xforms:bind id="eq0_bind" nodeset="instance('choose')/eq0" > constraint="not(. = '0') or . = ''"/> > <xforms:bind id="eq1_bind" nodeset="instance('choose')/eq1" > constraint="not(. = '1') or . = ''"/> > <xforms:bind id="gt1_bind" nodeset="instance('choose')/gt1" > constraint="not(. > '1') or . = ''"/> > > <xforms:action ev:event="eq0_event"> > <xforms:message level="modal">eq0</xforms:message> > </xforms:action> > > <xforms:action ev:event="eq1_event"> > <xforms:message level="modal">eq1</xforms:message> > </xforms:action> > > <xforms:action ev:event="changed3"> > <xforms:message level="modal">gt1</xforms:message> > </xforms:action> > > Finally the hidden controls for dispatch "xforms-invalid" event: > > <xforms:input bind="eq0_bind" style="display:none;"> > <xforms:dispatch ev:event="xforms-invalid" name="eq0_event" > target="mymodel"/> > </xforms:input> > > <xforms:input bind="eq1_bind" style="display:none;"> > <xforms:dispatch ev:event="xforms-invalid" name="eq1_event" > target="mymodel"/> > </xforms:input> > > <xforms:input bind="gt1_bind" style="display:none;"> > <xforms:dispatch ev:event="xforms-invalid" name="gt1_event" > target="mymodel"/> > </xforms:input> > > surely works on FormsPlayer 1.3. > > -- > Alexander Anokhin > AVTOVAZ JSC > email: ava@vaz.ru > icq: 123275798 >
Received on Tuesday, 5 April 2005 00:01:36 UTC