- From: Erik Bruchez <ebruchez@orbeon.com>
- Date: Tue, 3 Oct 2017 22:16:53 -0700
- To: Steven Pemberton <steven.pemberton@cwi.nl>
- Cc: XForms <public-xformsusers@w3.org>
- Message-ID: <CAAc0PEVzpbF0J3oGO=Fx-NXRP+2uVj34=A3LCaD6rZzya3PFeQ@mail.gmail.com>
Looking at this action item, I reread the new section "7.3 References, Dependencies, and Dynamic Dependencies" [1]. Compared to XForms 1.1's version [2], I prefer the new version as it is less convoluted and higher-level. There is the following text in the note for the XForms 1.1 version, which got removed: > For example, if the above expression were in a calculate, and if the attribute of either b element changes to the value X, the expression would be recalculated but it still does not record a reference to any c elements until the references are obtained in the next rebuild operation. That text kind of explained a dynamic dependency, but a little bit (or much) too vaguely. I think we could explain this using the updated example. For example, introducing a bind and an input control: ``` <bind id="capital-bind" ref="continent[@name='Europe']/country[@name='France']/capital"/> <input id="capital-input" bind="capital-bind" label="Capital"/> ``` Initially, because there is no `country` element with a `name` attribute set to value `France`, the `capital-input` control binds to an empty sequence and therefore is disabled. Now let's consider the following action: ``` <setvalue ref="continent[@name = 'Europe']/country[@name = 'UK']/@name" value="'France'"/> ``` After this `<setvalue>`, the model does a `recalculate` and `revalidate` and a `refresh` is performed. But the `capital-input` control remains non-relevant if there is no explicit or implicit (for example via `<insert>`) `rebuild` that is performed. The following sequence of actions would properly make the `capital-input` control appear: ``` <setvalue ref="continent[@name = 'Europe']/country[@name = 'UK']/@name" value="'France'"/> <rebuild/> ``` I don't know if this or something along those lines would be worthwhile adding. I still think that it leaves some aspects in the dark. The key rule here is that *all binds keep pointing to the same node until a `rebuild` happens*. Interestingly enough, if things are done at the UI level, they are implied to work. For example: ``` <input id="capital-input" ref="continent[@name='Europe']/country[@name='France']/capital" label="Capital"/> ``` would not require a `rebuild` since "All UI Expressions are re-evaluated as necessary". To discuss during the call. -Erik [1] https://www.w3.org/community/xformsusers/wiki/XForms_2.0#Dependencies [2] https://www.w3.org/TR/xforms/#expr-dependencies On Wed, Mar 22, 2017 at 12:43 AM, Steven Pemberton <steven.pemberton@cwi.nl> wrote: > The reason I took it out was because it was not used anywhere. I replaced > it with an explanation of why sometimes a manual recalculate was necessary. > > Let's talk about it this afternoon. > > Steven > > > > On Wed, 22 Mar 2017 05:38:47 +0100, Erik Bruchez <ebruchez@orbeon.com> > wrote: > > It should be enough to say that there are expressions with dynamic >> dependencies, provide examples, and indicate that manual rebuilds are >> needed in such cases. >> >> Do you think it is possible to create a canonical set of examples that >> show when manual rebuilds are needed? >> > > I notice that after the rewrite, there is no more mention of "dynamic > dependencies". Should we still provide an example of dynamic dependency as > we did for XForms 1.1 with: > > https://www.w3.org/TR/xforms/#expr-dependencies > > -Erik > > > > >
Received on Wednesday, 4 October 2017 05:17:41 UTC