Orbeon формирует правильную проверку входных данных с соответствующим атрибутом
И есть связи для реагирования на изменения
<xforms:bind nodeset="instance('request')/SOAP-ENV:Body/request">
<xforms:bind nodeset="request">
<xforms:bind nodeset="fromDate" type="xforms:date" id="bind_fromDate" />
<xforms:bind nodeset="toDate" type="xforms:date" id="bind_toDate" />
<xforms:bind nodeset="hoursperweek" type="xforms:int" id="bind_hoursperweek" />
</xforms:bind>
А также кнопка переменная
<xforms:instance id="buttons">
<buttons>
<submitbutton />
</buttons>
</xforms:instance>
И я показываю кнопку, если все входы заполнены
<xforms:bind nodeset="instance('buttons')">
<xforms:bind id="bind_savebutton" nodeset="submitbutton" relevant ="
instance('request')/SOAP-ENV:Body/request/fromDate != '' and
instance('request')/SOAP-ENV:Body/request/toDate != '' and
instance('request')/SOAP-ENV:Body/request/hoursperweek != '' " />
И есть небольшая форма с входами в теге тела
<xforms:group ref="instance('request')">
<xforms:input ref="fromDate" bind="bind_fromDate">
<xforms:label>Start date</xforms:label>
</xforms:input>
<xforms:input ref="toDate" bind="bind_toDate">
<xforms:label>End date</xforms:label>
</xforms:input>
<xforms:input ref="hoursperweek" bind="bind_hoursperweek">
<xforms:label>Hrs.</xforms:label>
</xforms:input>
<xforms:trigger bind="bind_savebutton">
<xforms:label>Save</xforms:label>
</xforms:trigger>
</xforms:group>
Но как проверить с соответствующим выражением, если вместо "2013-12-14" указана дата "WronDate"? Как увидеть hoursperweek "не числовая строка" или "23,3" вместо положительного целого числа, например, "40"? А можно проверить, что дата начала раньше даты окончания? А также привязки в событии change вместо события "mouse out"?
Спасибо
1 ответ
Решение
Вот примеры relevant
выражения:
- Действительной датой:
relevant="string() castable as xs:date"
- Допустимое десятичное число:
relevant="string() castable as xs:decimal"
- Конкретное десятичное число:
relevant=". = 23.3"
- Сравнить даты:
relevant="$start-date le $end-date"
(управления по имениstart-date
а такжеend-date
)