- From: John Boyer <boyerj@ca.ibm.com>
- Date: Fri, 14 Dec 2007 10:25:30 -0800
- To: Nick_Van_den_Bleeken@inventivegroup.com
- Cc: public-xforms@w3.org, www-forms-editor@w3.org
- Message-ID: <OF5E09D831.C907CB03-ON882573B1.00647735-882573B1.006535D7@ca.ibm.com>
Hi Nick, The 'if' and 'while' attributes use the in-scope evaluation context before the action is executed, so they are not subject to the result of a ref or nodeset on the action. This is the same context used to evaluate the context attribute on insert/delete. For this reason, the 'if' expression in the example you cited is actually correct. In fact, the example is written this way exactly to highlight the difference. The context coming into the setvalue is the 'default' instance. The bulk of the action script does work in a 'temp' instance. In the setvalue you cited, the one which adds to the accumulator, the 'value' attribute must directly reference the default instance because its evaluation context comes from the ref attribute, which refers to a node in the temp instance. But the 'if' attribute is evaluated before the 'ref' so it uses the in-scope evaluation context, which is the default instance in this example. Cheers, John M. Boyer, Ph.D. Senior Technical Staff Member Lotus Forms Architect and Researcher Chair, W3C Forms Working Group Workplace, Portal and Collaboration Software IBM Victoria Software Lab E-Mail: boyerj@ca.ibm.com Blog: http://www.ibm.com/developerworks/blogs/page/JohnBoyer Blog RSS feed: http://www.ibm.com/developerworks/blogs/rss/JohnBoyer?flavor=rssdw Nick_Van_den_Bleeken@inventivegroup.com Sent by: www-forms-editor-request@w3.org 12/14/2007 07:02 AM To public-xforms@w3.org, www-forms-editor@w3.org cc Subject Wrong XPath expression in Iterate example of XForms 1.1 CR All, Can it be that the 'if' XPath expression of the 3th setvalue in the ' Summing Selected Results' sample [1] is missing an explicit reference to the default instance? <trigger> <label>Get Sum</label> <action ev:event="DOMActivate"> <setvalue ref="instance('temps')/counter" value="1"/> <setvalue ref="instance('temps')/accumulator" value="0"/> <action while="instance('temps')/counter <= count(/some/nodes)"> <setvalue ref="instance('temps')/accumulator" value=". + instance('default')/some/nodes[number(instance('temps')/counter)]" if="boolean-from-string(/some/nodes[number(instance('temps')/counter)]/@selected)"/> <setvalue ref="instance('temps')/counter" value=". + 1"/> </action> </action> </trigger> The ref of the 3th setvalue changes the instance of the in-scope evaluation context to instance 'temps'. But the '/some/nodes' are in the 'default' instance (see value of the setvalue). -> we should change 'boolean-from-string(/some/nodes' to 'boolean-from-string(instance('default')/some/nodes' Regards, Nick Van den Bleeken - Research & Development Manager Inventive Designers Phone: +32 - 3 - 8210170 Fax: +32 - 3 - 8210171 Email: Nick_Van_den_Bleeken@inventivegroup.com 1: http://www.w3.org/TR/xforms11/#action-iterated Inventive Designers' Email Disclaimer: http://www.inventivedesigners.com/email-disclaimer
Received on Friday, 14 December 2007 18:25:48 UTC