- From: Steven Pemberton <steven.pemberton@cwi.nl>
- Date: Wed, 02 May 2018 12:32:00 +0200
- To: public-xformsusers@w3.org
I just want to plant a seed in your heads. There are occasions where I want to create a structure of a certain size, that may change during execution. Let's say I have a value 'size' that changes during execution, and I must make sure that there are that many elements in my structure at all times. At present, I do it like this: <instance> <data xmlns=""> <size>10</size> <element/> </data> </instance> <action ev:event="xforms-ready"> <insert ref="element" while="count(element) < size"/> </action> Then at start up I have the right number of elements. However, if size changes, I have to update the number of elements. The only way to do that is to have an invisible control, and catch value changed events there: <output ref="size" class="invisible"> <action ev:event="xforms-value-changed"> <insert ref="element" while="count(element) < size"/> <delete ref="element[last()]" while="count(element) > size"/> </action> </output> (an alternative to doing the deletes is to use relevance: <bind ref="element" relevant="position() < ../size"/> which saves repeated insertions and deletions if size changes a lot). Now all this work is incredibly related to rebuild(). A value changes, the model responds. Here is a strawman, just to kick off the thought process: <bind ref="element" count="../size"/> And a possible addition: <bind ref="element" count="../size" origin="instance('template')/element"/> Steven
Received on Wednesday, 2 May 2018 10:32:26 UTC