Re: How to set dynamically the value of attribute case on element toggle within an itemset

The proper feature appears in the next working draft of XForms 1.1 (due 
out real soon now).

For existing XForms 1.0 implementations, you need to change to using 
model-based switching based on the relevance of a set of groups.

For each case in your switch, use a group instead.  Put all those groups 
into a single outer group.

For each inner group, express a ref to a node.  Make that node be relevant 
if and only if the proper dimension selection is made. 

Then you will see that as you make your selections, the proper group 
becomes visible.
The outer group may be needed to help with focus management.  When the 
group containing the focus becomes non-relevant and some other group 
becomes relevant, the focus should be transferred from the non-relevant 
group to the outer group to the newly relevant group, which then pushes 
the focus to its first focusable child.

John M. Boyer, Ph.D.
STSM: Workplace Forms Architect and Researcher
Co-Chair, W3C Forms Working Group
Workplace, Portal and Collaboration Software
IBM Victoria Software Lab
E-Mail: boyerj@ca.ibm.com  http://www.ibm.com/software/

Blog: http://www.ibm.com/developerworks/blogs/page/JohnBoyer





"Paul Hermans" <paul.hermans@amplexor.com> 
Sent by: www-forms-request@w3.org
10/26/2006 03:34 AM

To
<www-forms@w3.org>
cc

Subject
How to set dynamically the value of attribute case on element toggle 
within an itemset







Is there a mechanism to dynamically set the attribute case on the toggle 
element within an itemset.

This is some sample code:

<!-- list to populate a select1 -->
<f:instance id="dimensionlist">
    <dimensions>
       <dimension class="afmeting">
         <name>hoogte</name>
       </dimension>
       <dimension class="afmeting">
         <name>lengte</name>
       </dimension>
       <dimension class="gewicht">
         <name>gewicht</name>
       </dimension>
    </dimensions>
</f:instance>

<!-- list to be subsetted based on a selection in previous one -->
<f:instance id="unitlist">
   <units>
     <unit dimension="afmeting">
        <name>millimeter</name>
        <value>mm</value>
     </unit>
     <unit dimension="afmeting">
        <name>centimeter</name>
        <value>cm</value>
     </unit>
     <unit dimension="afmeting">
        <name>meter</name>
        <value>m</value>
     </unit>
     <unit dimension="gewicht">
        <name>gram</name>
        <value>g</value>
     </unit>
     <unit dimension="gewicht">
        <name>kilogram</name>
        <value>kg</value>
    </unit>
 </units>
</f:instance>

 <f:select1 ref="dimension" appearance="single">
   <f:itemset nodeset="instance('dimensionlist')/dimension">
      <f:label ref="name"/>
      <f:value ref="name"/>
<!-- 
-------------------------------------------------------------------------- 
-->
<f:toggle ev:event="xforms-select" case="HOW_TO_SET_DYNAMICALLY"/>

If selected dimension has @class='afmeting', case="afstand"
If selected dimension has @class='gewicht', case="gewicht"

<!-- 
-------------------------------------------------------------------------- 
-->
   </f:itemset>
<f:select1>

 <f:switch>
   <f:case id="afstand">
   <f:select1 ref="unit" appearance="single">
     <f:itemset 
nodeset="instance('unitlist')/unit[@dimension='afmeting']">
       <f:label ref="name"/>
       <f:value ref="value"/>
    </f:itemset>
   </f:select1>
   </f:case>
   <f:case id="gewicht"> 
   <f:select1 ref="unit" appearance="single">
     <f:itemset nodeset="instance('unitlist')/unit[@dimension='gewicht']">
       <f:label ref="name"/>
       <f:value ref="value"/>
    </f:itemset>
   </f:select1>
</f:case>
</f:switch>

Received on Thursday, 26 October 2006 17:54:28 UTC