RE: recalculating several models

> id('i2')/i:mom/i:daughter

Is this valid? I was unaware of using the id function in this way to
retrieve a separate instance document. If this is not currently specified in
the draft I would propose adding it or something similar. This is very
useful.

- Ryan

-----Original Message-----
From: Jérôme Nègre [mailto:jerome.negre@e-xmlmedia.fr]
Sent: Monday, January 07, 2002 5: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 08:50:48 UTC