- From: Erik Bruchez <ebruchez@orbeon.com>
- Date: Wed, 18 Jul 2007 13:10:41 +0200
- To: public-forms@w3.org
John & all,
> Regarding the question of whether there was any kind of resolution,
> no there was no resolution to remove the binding property.
That's what I feared ;-)
> [...] but Leigh in particular was unhappy with the binding property
> because it cannot be resolved to retrieve the nodeset without
> knowing whether the binding value comes from a bind attribute or a
> nodeset attribute.
There is more. Of course you can have:
<xforms:insert context="A/B" nodeset="name" .../>
<xforms:insert context="X/Y" nodeset="name" .../>
or even:
<xforms:group ref="A/B">
<xforms:insert nodeset="name" .../>
</xforms:group>
<xforms:group ref="X/Y">
<xforms:insert nodeset="name" .../>
</xforms:group>
> We need a simple way for authors to be able to detect inserts and
> deletes that are happening to particular repeated data sets when
> there is more than one repeat in the form. For example, if I have
> two inserts or deletes that operate over A/B/name and X/Y/name, the
> binding property of the events can easily be used to help me figure
> out which kind of 'name' I am dealing with, so I can use conditional
> logic to respond appropriately.
I don't disagree that it is a desirable requirement, although I don't
think I have hit the use case myself.
My feeling is that using the value of @bind or @nodeset is not
appropriate for this task, because neither one actually identifies
that node-set. Sure, the form author can tweak XPath expressions to
make the "binding" unique enough, but it is a clunky solution in my
opinion.
What about passing the id attribute of xforms:action instead? Would
that satisfy the requirement? Since ids are unique, you would have to
use different ids if you have a combination of multiple
xforms:insert/xforms:delete actions operating over that node-set, but
you could detect this, e.g.:
if (starts-with(event('action-id'), 'repeat1-')) ...
There is also the possibility of adding a new attribute to
xforms:insert and xforms:delete just for that purpose. For example:
<xforms:insert parameter="repeat1" .../>
This is a fairly common pattern in programming used typically with
callback functions: here we will get "called back" with xforms-insert,
and we want to be able to pass our own identifying information to that
callback by passing it to the action. We would recover it with
something like:
event('parameter')
I would find either of these solutions better, because much more
consistent.
> However, at the face to face, the alternative was proposed of using
> a generate-id() function. As I pointed out in my email below, this
> proposal is more flawed because, although it is better for
> insertion, it completely fails for deletion.
I agree this wouldn't be a good solution either.
-Erik
--
Orbeon Forms - Web Forms for the Enterprise Done the Right Way
http://www.orbeon.com/
Received on Wednesday, 18 July 2007 11:10:51 UTC