- From: Aaron Reed <aaronr@us.ibm.com>
- Date: Fri, 29 Feb 2008 18:24:46 -0600
- To: www-forms@w3.org
Hi, One of our users found this interesting testcase that we (FF XForms extension) handle poorly. But as it turns out, of the processors that I tried (Orbeon, XSmiles and formsPlayer besides ourselves), only fP came close to handling it correctly so I don't think that we are the only ones unsure of how this should work. The problem arises if the author has a xf:select/select1 with an item that has an event handler for xforms-select in it and inside that event handler the author put a xf:insert. In my interpretation of the spec, when the user clicks on the item to select it, the xf:insert should happen which will cause RRRR to occur immediately after the insertion since this is an outermost action handler. After the xforms-select fires, the bound node value should change. Then the xforms-recalculate, xforms-revalidate, and then another xforms-refresh will fire as per section 4.6.7 in the spec. fP only fires one xforms-refresh, so even though they seem to handle the testcase correctly otherwise, this doesn't correspond with what I think should happen. The other two processors only fire one refresh but they also seemingly don't process the xf:insert so they probably have bugs like we do. So I guess I'd like to know: 1) Should the bound node value change before xforms-select? Or is that being left intentionally vague and being deemed implementation dependent? 2) How many xforms-rebuild, -recalculate, -revalidate and -refresh events should fire? 1 rebuild and 2 of the rest or just one of each? Here is the testcase: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xf="http://www.w3.org/2002/xforms"> <head> <xf:model id="selection"> <xf:message level="modal" ev:event="xforms-refresh"> xforms-refresh </xf:message> <xf:instance id="choice"> <selection xmlns=""> <sort> <item label="dummy"/> </sort> <types/> </selection> </xf:instance> </xf:model> </head> <body> <h2> Each time the testitem changes to the selected state, it should add another node to the nodeset </h2> <xf:group model="selection"> <xf:select ref="types" appearance="full"> <xf:item> <xf:label>testitem</xf:label> <xf:value>cool</xf:value> <xf:action ev:event="xforms-select"> <xf:insert nodeset="../sort/item[1]"/> <xf:message level="modal">xforms-select</xf:message> </xf:action> </xf:item> </xf:select> </xf:group><br/><br/> <xf:output value="count(/selection/sort/item)"> <xf:label>number of nodes: </xf:label> </xf:output> </body> </html> Thanks for listening, --Aaron
Received on Saturday, 1 March 2008 00:38:52 UTC