Проверка данных в компоненте Orbeon XBL - PullRequest
0 голосов
/ 27 августа 2018

Я хочу создать пользовательский компонент XBL для Orbeon Form Builder, который будет содержать входной текст и проверять его.

Мне удалось создать компонент и добавить его на боковую панель Form Builder, но я не могу понять, как выполнить проверку.

Проверка, которую я ищу, довольно сложна, похожа на кредитную карту, некоторые цифры имеют особое значение, а затем есть контрольная сумма, которую необходимо вычислить и проверить.

То, что я имею до сих пор, это:

<xbl:xbl xmlns:xf="http://www.w3.org/2002/xforms"
         xmlns:ev="http://www.w3.org/2001/xml-events"
         xmlns:xbl="http://www.w3.org/ns/xbl"
         xmlns:xxbl="http://orbeon.org/oxf/xml/xbl"
         xmlns:fb="http://orbeon.org/oxf/xml/form-builder"
         xmlns:my="http://example.com/xbl">

    <xbl:binding element="my|component" id="my-component" xxbl:mode="lhha binding value">
        <metadata xmlns="http://orbeon.org/oxf/xml/form-builder">
            <display-name lang="en">Component</display-name>
            <icon lang="en">
                <small-icon>/forms/orbeon/builder/images/input.png</small-icon>
                <large-icon>/forms/orbeon/builder/images/input.png</large-icon>
            </icon>
            <templates>
                <view>
                    <xf:input id="" ref="" xmlns="">
                        <xf:label ref=""/>
                        <xf:hint ref=""/>
                        <xf:help ref=""/>
                        <xf:alert ref=""/>
                    </xf:input>
                </view>
            </templates>
        </metadata>
    </xbl:binding>
</xbl:xbl>

1 Ответ

0 голосов
/ 28 августа 2018

Вы можете поместить шаблон проверки в метаданные на том же уровне, что и <view>, но с использованием <bind>. Например:

<bind
    type="xf:integer"
    constraint="...some XPath expression here..."/>

Вы можете опустить тип xf:integer, если значение в противном случае подтверждено constraint.

С помощью constraint вы сможете проверить свою контрольную сумму.

Если часть вашей ценности следует тем же правилам, что и кредитные карты, вы можете использовать стандартную функцию is-card-number() в качестве помощника.

...