XForms: How to bind value to an attribute



I am working on an XForm form design. My current form looks something like this:



<xforms:model>
<xforms:instance id="PhoneCallsSimple2" xmlns="">
<request>
<criterias relation="AND">
<criterias relation="OR">
<criteria name="CritCallStartDateLower" operator="GreaterOrEqual" model="CallStartDate" gui_display="From date"/>
<criteria name="CritCallStartDateUpper" operator="LessOrEqual" model="CallStartDate" gui_display="To date"/>
</criterias>
<criteria name="CritCallCustomerID" operator="Equal" model="CustomerID" gui_display="Customer ID"/>
<criteria name="CritCallCustomerLastName" operator="BeginWith" model="CustomerLastName" gui_display="Customer LastName"/>
</criterias>
</request>
</xforms:instance>
<xforms:bind id="bindCallStartDateLower" required="true()" type="xforms:date" nodeset="/request/criterias/criterias/criteria[@name='CritCallStartDateLower']"/>
<xforms:bind id="bindCallStartDateUpper" required="true()" type="xforms:date" nodeset="/request/criterias/criterias/criteria[@name='CritCallStartDateUpper']" constraint="(days-from-date(.) &gt;= days-from-date(/request/criterias/criterias/criteria[@name='CritCallStartDateLower']))"/>
<xforms:bind id="bindCallCustomerID" required="false()" type="xforms:positiveInteger" nodeset="/request/criterias/criteria[@name='CritCallCustomerID']"/>
<xforms:bind id="bindCallCustomerLastName" required="false()" type="xforms:string" nodeset="/request/criterias/criteria[@name='CritCallCustomerLastName']"/>

<xforms:submission id="search" ref="/request" replace="none"/>
<xforms:submission id="order" ref="/request" replace="none"/>


<xforms:setvalue ev:event="xforms-model-construct-done" ref="/request/criterias/criterias/criteria[@name='CritCallStartDateLower']" value="days-to-date(days-from-date(local-date()) - 182) "/>
<xforms:setvalue ev:event="xforms-model-construct-done" ref="/request/criterias/criterias/criteria[@name='CritCallStartDateUpper']" value="days-to-date(days-from-date(local-date())) "/>

</xforms:model>


When submitting the form adds the values to the criterias, and it looks like so:



<criterias relation="AND">
<criterias relation="OR">
<criteria name="CritCallStartDateLower" operator="GreaterOrEqual" model="CallStartDate" gui_display="From date">value1</criteria>
<criteria name="CritCallStartDateUpper" operator="LessOrEqual" model="CallStartDate" gui_display="To date">value2</criteria>
</criterias>
<criteria name="CritCallCustomerID" operator="Equal" model="CustomerID" gui_display="Customer ID">value3</criteria>
<criteria name="CritCallCustomerLastName" operator="BeginWith" model="CustomerLastName" gui_display="Customer LastName"/>
</criterias>


What i need to do is too write an xform that would bind the value to either an attribute or to a child within the criteria. For example:



<criterias relation="AND">
<criterias relation="OR">
<criteria name="CritCallStartDateLower" operator="GreaterOrEqual" model="CallStartDate" gui_display="From date" value="value1"></criteria>
<criteria name="CritCallStartDateUpper" operator="LessOrEqual" model="CallStartDate" gui_display="To date"><value>value2<value></criteria>
</criterias>
<criteria name="CritCallCustomerID" operator="Equal" model="CustomerID" gui_display="Customer ID"></criteria>
<criteria name="CritCallCustomerLastName" operator="BeginWith" model="CustomerLastName" gui_display="Customer LastName"/>
</criterias>


Any help would be appreciated, thanks!


No comments:

Post a Comment