WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Советы » Связывания, зависимости и ограничения

Связывания, зависимости и ограничения


Дата публикации: 20-03-2008

Существует два способа присвоения значений данным экземпляра в XForms: данные могут зависеть от других данных, либо данные могут быть связаны с входными данными, предоставляемыми пользователем. В этом разделе рассмотрен первый способ; второй - связывание входных данных пользователя - в Пользовательском интерфейсе XForms.

В пределах модели определяется тег <bind>; он позволяет сделать данные экземпляра зависящими от других данных. Например, инструкция в Листинге 6 связывает TaxTotal с вычисляемым налогом (TaxRate умножается на SubTotal):


Листинг 6. Инструкция bind

<!--Within the Model-->
<xforms:bind ref="/OrderInfo/PriceInfo/TaxTotal"
    calculate="/OrderInfo/PriceInfo/TaxRate *
        /OrderInfo/PriceInfo/SubTotal"/>


Атрибут ref ссылается на узел, который вы желаете связать - TaxTotal. Атрибут calculate определяет значение, которое вы желаете связать с этим узлом; в данном случае вы связываете TaxTotal с произведением TaxRate и SubTotal. Кроме умножения calculate поддерживает и другие простые функции (полный список см. в Приложении D).

Вы можете воспользоваться атрибутом relevant для определения условий, при которых тег bind является допустимым и должен применяться. Например, вы можете связать TaxRate, как показано в Листинге 7:


Листинг 7. Инструкция bind и соответствующий атрибут

<!--Within the Model-->
<xforms:bind ref="/OrderInfo/PriceInfo/TaxRate"
    calculate="/OrderInfo/TaxInfo/CT"
    relevant="/OrderInfo/PersonalInfo/Address/State = 'CT'"/>

Инструкция присваивает TaxRate (ref) ставку налога в штате Коннектикут только в том случае, если пользователь живет в этом штате (условие relevant). Если вы хотите выполнить эту процедуру для двух других штатов: Нью-Йорк и Нью-Джерси, определите аналогичные инструкции, связав TaxRate со значением соответствующего штата.

Вы можете также использовать тег <bind> для различных ограничений данных экземпляра, например, указав тип данных с помощью атрибута type. В Листинге 8 показано, как сделать так, чтобы поле SubTotal было десятичным числом:


Листинг 8. Инструкция bind и ограничение типа


<!--Within the Model-->
<xforms:bind ref="/OrderInfo/PriceInfo/SubTotal" type="xsd:decimal"/>

 

Существуют и другие способы ограничения данных экземпляра; полный список см. в Приложении E. XForms-процессор сверяет данные экземпляра с ограничениями, проверяя поле за полем. Если пользователь вводит данные, которые нарушают любое из ограничений, браузер, поддерживающий XForms, немедленно сообщит об этом пользователю. Благодаря этому, существенно повышаются удобство и простота использования, а обработчик получает только правильно оформленные данные.

Более подробная информация о связываниях, зависимостях и ограничениях приведена в Спецификации (см. Приложение B5).

Инициализация

 

Модель формы заказа была бы неполной без описания способа связи с сервером обработчика. Вы можете использовать тег <submission> и атрибут action, чтобы указать, какой вызов необходимо запустить при готовности пользователя к инициализации:


Листинг 9. Инструкция инициализации


<!--Within the model-->
<xforms:submission id="submit1" action="http://www.example/" method="post"/>

 

Можно также задать HTTP-метод, то есть get или post. Мы рекомендуем использовать post, чтобы инкапсулировать XML-содержание.

В пределах одной и той же модели может быть множество блоков <submission>. Поэтому необходимо задать каждому тегу уникальный идентификатор с атрибутом id (например, id="sub"), поскольку в пользовательском интерфейсе эти теги будут связаны с кнопками submit.

Более подробная информация о <submission> приведена в Спецификации.

Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Октябрь 2018 (14)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)
Ноябрь 2015 (1)

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41

Друзья сайта



Пурифайер ecotronic

Продажа кулеров, пурифайеров, помп для воды и др

aquastarug.ru


Случайная цитата

Неизвестный автор:

"Если ты загнал под бан – сайт и блог в придачу, про тебя на серче скажут – «криворукий мальчик»."

Опрос

Какой антивирус Вы используете?

Kaspersky Antivirus
NOD32
Norton Antivirus
Dr.Web
Panda
Аvast!
ClamWin
Другой...