Summary
- 14 октября 2003 года W3C выпустил XForms 1.0 как Recommendation. Форма делилась на модель, XML-данные экземпляра и интерфейс; привязки связывали видимые элементы управления с узлами данных.
- В платёжном примере рекомендации номер и срок действия карты имеют значение при выборе кредитной карты. Свойство
relevantуправляет доступностью полей и исключает неподходящие узлы из XML, создаваемого для отправки.
Покупатель кладёт на прилавок купюры. Кассир пересчитывает деньги и просит назвать срок действия кредитной карты. «Так напечатано в бланке», — объясняет он. На сайтах такой кассир часто выдаёт себя за анкету: поле видно, значит, отвечай. Рекомендация W3C XForms 1.0 от 14 октября 2003 года предложила писать условия вопросов отдельно от их изображения на экране. Бланк наконец мог учитывать уже полученный ответ.
XForms разбивал работу на три части. Модель описывала структуру данных и правила. Экземпляр представлял собой XML-документ, который заполнялся ответами. Интерфейс показывал человеку элементы управления. Привязка ref указывала, с каким узлом экземпляра работает каждый элемент. Внешний вид вопроса можно было менять, сохраняя адрес его ответа и правило, по которому ответ требуется.
Пример в спецификации устроен на материале небольшой покупки. В instance заранее есть места для способа оплаты, номера карты и срока её действия. submission называет пункт назначения. На видимой стороне select1 предлагает наличные или кредитную карту, а два input принимают данные карты. У каждого элемента есть собственный label; ref соединяет его с нужным местом в XML. При заполнении экземпляр меняется, а при отправке процессор сериализует его в XML.
select1 обозначал выбор одного варианта, не навязывая каждому устройству одинаковую круглую кнопку. Графический экран и голосовой интерфейс могли предъявить варианты по-своему. Связь с данными оставалась общей. Эта свобода оформления требовала от автора точности: красочный вопрос, привязанный не к тому узлу, превращал анкету в ловушку с хорошим дизайном.
Решающее условие помещалось в bind. Для номера и срока карты пример задавал выражение relevant, которое проверяло, равен ли способ оплаты cc, то есть варианту с картой. На этой ветке сведения становились required и получали типовые ограничения. Для номера в примере использован шаблон из 14–18 цифр, для срока — xsd:gYearMonth. Если покупатель менял способ оплаты на наличные, процессор пересчитывал условие. Кассир мог перестать искать срок действия у бумажных денег.
Определение relevant в рекомендации касалось и того, что отправлялось наружу. Узел, признанный неуместным, исключался из сериализованного XML. Связанный с ним элемент управления становился недоступным, покидал порядок навигации и не мог получить фокус. При выборе карты поля возвращались в действующую ветку. При выборе наличных данные карты уходили не только с экрана, но и из отправляемой записи.
Именно последнее отличает решение от занавески. Можно спрятать поле и всё равно отправить старое значение, оставшееся в данных. XForms проводил одно условие через модель, пользовательский интерфейс и итоговый XML. Автор формулировал правило, процессор исполнял его, а две видимые стороны — вопрос на экране и запись после отправки — согласовывались. Для скромной покупки это была серьёзная служебная дисциплина.
В объявлении W3C разделение описывалось как различие между целью, представлением и результатом. Платёжный пример переводит эти слова на язык кассы: цель — узнать способ оплаты; представление зависит от устройства; результат — XML с относящимися к делу данными. Вежливая форма умеет не только задавать вопросы. Она знает, когда вопрос уже лишний.
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров





