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)
Другие вопросы по тегам