W3C home > Mailing lists > Public > www-forms@w3.org > February 2007

Re: implementors question: correct behavior of nested nodeset in repeat

From: David Landwehr <david.landwehr@picoforms.com>
Date: Wed, 28 Feb 2007 11:55:55 +0100
Message-ID: <45E55FBB.6000502@picoforms.com>
To: John Boyer <boyerj@ca.ibm.com>
CC: Joern Turner <joern.turner@web.de>, mark.birbeck@x-port.net, www-forms@w3.org, www-forms-request@w3.org

Alright, then the discussion about homogeneous collections has just be 
side remarks between implementors. I have never enforced the homogeneous 
collection restriction because it gets in the way for some use cases. I 
think we should loosen this requirement and fix the "problem" with 
insert and delete (I have done just as Birbeck suggests which works just 
great).

The implementation problems you use as arguments for keeping the 
homogeneous collection cannot be used as a generalization for how 
implementors implement XForms. The solution you outline was actual how I 
first tried to implement XForms in a prototype a long time ago but it 
really was a bad choice for many reasons and soon abandoned (main reason 
was that it was not efficient).

We should never keep good functionality out because of implementation 
details. Implementors have to find a way to provide the functionality 
efficiently. This is especially important in declarative languages as 
every time we make a restriction we are removing authors ability to do 
something. In XForms we have in the past and still are keeping changes 
from going into the specification simply because one of the implementors 
in the working group cannot of hand see how to implement something. This 
is a shame.

Best regards,
David

John Boyer skrev:
>
> Although there is reasonably strong support for removing the notion of 
> homogeneous collection in principle, I believe we did not resolve to 
> do so.
> I believe the sticking point was around the loss of the single common 
> parent more than anything else, although continuity is useful too.
> Although Joern made a good point about a problem that can occur with 
> insertion if there is not a common parent to all the nodes, we have 
> actually addressed this issue for insert (as Mark's response clearly 
> shows).
>
> But for the repeat itself, it becomes more difficult to *efficiently* 
> detect whether the repeat needs to be updated.  One could, for 
> example, create a listener on the single common parent to detect any 
> addition or deletion of a child element and use that to know whether 
> the nodeset for the repeat needs to be re-evaluated.  The nodeset may 
> still be the same, in which case the repeat does not get updated, but 
> having the single common parent as the focal point means that in a 
> larger form I don't have to check every repeat nodeset whenever *any* 
> node is inserted or deleted.
>
> If we make this change, then the addition or deletion of a node *in 
> any instance* would require the reevaluation of all nodesets of all 
> repeats bound to that model.  It can be done, but it's slower.
>
> 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
>
>
>
>
> *David Landwehr <david.landwehr@picoforms.com>*
> Sent by: www-forms-request@w3.org
>
> 02/27/2007 11:25 AM
>
> 	
> To
> 	John Boyer/CanWest/IBM@IBMCA
> cc
> 	mark.birbeck@x-port.net, Joern Turner <joern.turner@web.de>, 
> www-forms@w3.org, www-forms-request@w3.org
> Subject
> 	Re: implementors question: correct behavior of nested nodeset in  repeat
>
>
>
> 	
>
>
>
>
>
>
> Hi Joern,
>
> I think all implementors in the working group have always returned 6
> nodes and not enforced the restriction of the homogeneous node-set;
> exactly as Mark Birbeck wrote. I think we once reached a consensus to
> remove this restriction in the group.
>
> Best regards,
> David
>
>
>
> John Boyer skrev:
> >
> > Hi Joern,
> >
> > Hmm, yes, I forgot about that common parent issue entirely.
> >
> > Yes, XForms does currently place a restriction on what XPath will
> > natively do.
> > So, the XPath will indeed produce 6 nodes, but XForms repeats place
> > restrictions on those nodes corresponding to the definition of
> > homogeneous collection.  So look for that word.
> >
> > The spec says that the nodes must have the same qname and same parent.
> >  This means that you can expect some or many implementations to create
> > a binding exception if the rules of homogeneous collection are not met.
> >
> > It turns out that the spec work has *not* been done to eliminate the
> > homogeneous collection language from repeat, though we did mostly
> > remove it from insert/delete in 1.1.
> >
> > My spidey sense tells me that a last call comment on this point may
> > not be too far in the distance.  Keep in mind that a 'last call'
> > comment doesn't mean it'll change, but it also doesn't mean it won't :-)
> >
> > Cheers,
> > 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
> >
> >
> >
> >
> > *"Mark Birbeck" <mark.birbeck@x-port.net>*
> > Sent by: www-forms-request@w3.org
> >
> > 02/27/2007 08:29 AM
> > Please respond to
> > mark.birbeck@x-port.net
> >
> >
> >                  
> > To
> >                  "Joern Turner" <joern.turner@web.de>
> > cc
> >                  www-forms@w3.org
> > Subject
> >                  Re: implementors question: correct behavior of 
> nested nodeset in repeat
> >
> >
> >
> >                  
> >
> >
> >
> >
> >
> >
> > Hi Joern,
> >
> > There used to be a restriction on nodesets, such that they had to have
> > a common parent and be all of the same name. This has since been
> > relaxed, so in my view your example should have 6 nodes.
> >
> > (Even when the nodeset restrictions were tighter, I don't believe it
> > was clear what to do in this situation; throw an error on selecting
> > the nodes? Just return the first 3 nodes, from the first parent?
> > Nothing was clearly defined.)
> >
> > Regards,
> >
> > Mark
> >
> >
> > On 27/02/07, Joern Turner <joern.turner@web.de> wrote:
> > >
> > > seeking help understanding the following use case:
> > >
> > > for an instance like this:
> > > xforms:instance id="Test" >
> > > <data xmlns="">
> > >   <level id="1">
> > >    <item>Item 1-1</item>
> > >    <item>Item 1-2</item>
> > >    <item>Item 1-3</item>
> > >   </level>
> > >   <level id="2">
> > >    <item>Item 2-1</item>
> > >    <item>Item 2-2</item>
> > >    <item>Item 2-3</item>
> > >   </level>
> > > </data>
> > > </xforms:instance>
> > >
> > > and a repeat like this:
> > > <xhtml:body>
> > >   <xforms:repeat id="repeat1" nodeset="/data/level/item">
> > >    <xforms:input ref=".">
> > >     <xforms:label>Value</xforms:label>
> > >    </xforms:input>
> > >   </xforms:repeat>
> > > </xhtml:body>
> > >
> > > what would be the correct behavior? Should the repeat show 3 or 6 
> items
> > > and what would happen in case of an insert?
> > >
> > > I couldn't find a clear answer to this from the Spec - help anyone?
> > >
> > > Joern
> > >
> > >
> > >
> >
> >
> > --
> >  Mark Birbeck, formsPlayer
> >
> >  mark.birbeck@x-port.net | +44 (0) 20 7689 9232
> >  http://www.formsPlayer.com | http://internet-apps.blogspot.com
> >
> >  standards. innovation.
> >
> >
>
>
>
Received on Wednesday, 28 February 2007 10:56:22 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Saturday, 10 March 2012 06:22:09 GMT