- From: Klotz, Leigh <Leigh.Klotz@xerox.com>
- Date: Thu, 30 Nov 2006 16:00:12 -0800
- To: "www-forms" <www-forms@w3.org>
Itwouldbeniceif there were a way to filter a list of matching nodes to submit. I would like to submit only the index numbers of items whose @selected attribute is true. The present definition of submission/@ref uses the first nodeset rule, so you cannot just do <submission ref="instance('data')/lines/line[boolean-from-string(@selected)]/index" /> Additionally, the ref attribute doesn't appear to be precise enough to specify what parts of the tree to submit and what parts to leave out. Some simple XPath-based filtering syntax like that would be attractive, though. Here's one way to do it, using a control variable (set during submission only) and a pair of bind elements, one to say the "/lines/line[boolean-from-string(@selected)]" part and another to say that "index" part. Can anybody think of a clever union expression to put in submission/@ref that just does what I want? <instance id="data"> <data xmlns=""> <lines> <line selected="false"> <index>1</index> <date>2006-01-01T00:00:00Z</date> <name>A</name> <text>...</text> </line> <line selected="false"> <index>2</index> <date>2006-01-01T01:00:00Z</date> <name>B</name> <text>...</text> </line> <line selected="false"> <index>3</index> <date>2006-01-01T02:00:00Z</date> <name>C</name> <text>...</text> </line> </lines> </data> </instance> <instance id="results"> <empty xmlns=""/> </instance> <instance id="control"> <control xmlns=""> <selected>false</selected> </control> </instance> <bind nodeset="instance('data')lines/line/@selected" type="xsd:boolean" /> <bind nodeset="instance('control')/selected" type="xsd:boolean" /> <bind nodeset="instance('data')/lines/*[local-name(.)!='index']" relevant="not(boolean-from-string(instance('control')/selected)) <bind nodeset="instance('data')/lines/line" relevant="not(boolean-from-string(instance('control')/selected)) or boolean-from-string(@selected)"/> <submission id="delete" action="/delete" ref="instance('data')" replace="instance" instance="results"> <setvalue ev:event="xforms-submit" ref="instance('control')/selected">true</setvalue> <setvalue ev:event="xforms-submit-done" ref="instance('control')/selected">false</setvalue> <setvalue ev:event="xforms-submit-error" ref="instance('control')/selected">false</setvalue> </submission> <submit submission="delete"> <label>Delete</label> </submit> <repeat id="lines" nodeset="lines/line"> <input ref="@selected"> <label class="columnHeader">X</label> </input> <output ref="date"> <label class="columnHeader">Date</label> </output> <output ref="name"> <label class="columnHeader">Name</label> </output> </repeat> <output ref="lines/line[index('lines')]/text"> <label>Text</label> </output>
Received on Friday, 1 December 2006 00:00:30 UTC