Re: xforms:choose/if?

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(. &gt; '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 Friday, 1 April 2005 06:24:50 UTC