- From: Erik Bruchez <ebruchez@orbeon.com>
- Date: Fri, 20 Apr 2007 12:27:25 +0800
- To: public-forms@w3.org, www-forms-editor@w3.org
John Boyer wrote: > > Thanks for the markup as it can be slightly modified to highlight my > point. > > The first repeat does not generate any focusable controls, so it is > unclear how the index of the first repeat ever changes. But adjust > the first repeat (below) to be an input instead so that the user can > focus a control in any repeat item. I am not sure XForms prevents an implementation to allow the user to select a repeated section and therefore change a repeat index in the absence of focusable controls. But yes, you can as well use focusable controls. > By focusing the control in one of the repeat items, the index > changes in the first repeat. But there is no instance node > dependency to suggest that the second repeat's nodeset must be > re-evaluated. In other words, there is no xforms-refresh; indeed > there is no[rebuild] recalculate revalidate *refresh*. And if there > were, there is nothing that changes in the instance data that would > cause the refresh to conclude that the second repeat should be > regenerated. > > So the first conclusion is that I don't think the markup in this > email substantiates the limitation of index() to just xforms actions > because I think it already doesn't work in any cases. I agree that the current XForms spec does not specify that there should be a refresh. Then in that case, I *really* don't see a reason why index() could not be used in a UI binding. It would seem to be an arbitrary restriction. > Moreover, making it work seems like it might be hard because it > seems like there might be problems that arise based on the order in > which refresh chooses to update repeats. For example, > > <repeat id="X" nodeset="some/nodes"> > ... > </repeat> > <repeat id="Y" nodeset="some[index('X')]/other[index('Z')]/nodes"> > ... > </repeat> > <repeat id="Z" nodeset="still/more[index('X')]/nodes"> > ... > </repeat> > > If the index changes in the first repeat, the second and third > repeats would need to be regenerated, but clearly the order should > be to update Z first then update Y. An implementation would probably need a system of dependency to determine the best update order. Now to get back to the original case: what if you did perform a refresh upon a focus change in the first repeat? Then it seems that the spec allows implementing my use case at the cost of an explicit refresh. -Erik -- Orbeon Forms - Web Forms for the Enterprise Done the Right Way http://www.orbeon.com/
Received on Friday, 20 April 2007 04:27:32 UTC