- From: Micah Dubinko <MDubinko@cardiff.com>
- Date: Mon, 7 Jan 2002 11:27:46 -0800
- To: 'Jérôme Nègre' <jerome.negre@e-xmlmedia.fr>, www-forms@w3.org
Hi Jérôme, Good to see such in-depth analysis of XForms! <xform:instance id="i1"> <i:dad> ... <xform:bind ... calculate="id('i1')/i:dad/i:son1"/> In this example the function id() would return an empty node-set. Why? The XPath expressions apply to instance data, not the containing document. Since the instance data, which is a copy of everything between <xforms:instance>...</xforms:instance>, doesn't contain an id of "i1", there's no match on the function id(). .micah P.S. On your broader point about recalculation dependencies, let's ask our calculation expert, John Boyer. P.P.S. If the recalculate event applied to all models, to which element would the event be targeted? Thanks! -m -----Original Message----- From: Jérôme Nègre [mailto:jerome.negre@e-xmlmedia.fr] Sent: Monday, January 07, 2002 2:48 AM To: www-forms@w3.org Subject: recalculating several models Hi, In the current working draft, events xforms:recalculate and xform:revalidate are dispatched to element model. This implies that recalculation and revalidation are done a model after another (as described in chapter 11.3.6). But, for some kind of dependencies, such as in the following example, this is not possible: <html xml:...="..."> <head> <xform:model id="m1"> <xform:instance id="i1"> <i:dad> <i:son1>value</i:son1> <i:son2>value</i:son2> </i:dad> </xform:instance> <xform:bind ref="i:dad/i:son2" calculate="id('i2')/i:mom/i:daughter"/> </xform:model> <xform:model id="m2"> <xform:instance id="i2"> <i:mom> <i:daughter>value</i:daughter> </i:mom> </xform:instance> <xform:bind ref="i:mom/i:daughter" calculate="id('i1')/i:dad/i:son1"/> </xform:model> </head> <body> <xform:input model="m1" ref="i:dad/i:son1"> <xform:caption>Change me</xform:caption> </xform:input> </body> </html> The recalculation must happen in the following order : 1/ The user changes the value of id('i1')/i:dad/i:soon1 via the input control. 2/ id('i2')/i:mom/i:daughter is recalculated. 3/ id('i1')/i:dad/i:son2 is recalculated. In order to have this behaviour, I think recalculation/revalidation should be made global, and their corresponding events should be dispatched to either the root element of the document, or to a new element containing all the models. Am I missing something ? Regards, Jérôme Nègre
Received on Monday, 7 January 2002 14:30:03 UTC