W3C home > Mailing lists > Public > www-forms@w3.org > March 2008

what should happen when a xf:insert is inside a xforms-select handler?

From: Aaron Reed <aaronr@us.ibm.com>
Date: Fri, 29 Feb 2008 18:24:46 -0600
To: www-forms@w3.org
Message-ID: <fqa7u5$d4$1@ger.gmane.org>


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"
   <xf:model id="selection">
     <xf:message level="modal" ev:event="xforms-refresh">
     <xf:instance id="choice">
       <selection xmlns="">
           <item label="dummy"/>
   <h2> Each time the testitem changes to the selected state,
        it should add another node to the nodeset
   <xf:group model="selection">

     <xf:select ref="types" appearance="full">
         <xf:action ev:event="xforms-select">
           <xf:insert nodeset="../sort/item[1]"/>
           <xf:message level="modal">xforms-select</xf:message>

   <xf:output value="count(/selection/sort/item)">
     <xf:label>number of nodes: </xf:label>


Thanks for listening,
Received on Saturday, 1 March 2008 00:38:52 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:36:21 UTC