XForms — это формат XML , используемый для сбора входных данных из веб-форм . XForms был разработан как следующее поколение форм HTML / XHTML , но он достаточно универсален, чтобы его можно было использовать автономно или с языками представления, отличными от XHTML, для описания пользовательского интерфейса и набора общих задач по манипулированию данными .
XForms 1.0 (третье издание) было опубликовано 29 октября 2007 года. Первоначальная спецификация XForms стала официальной рекомендацией W3C 14 октября 2003 года, а XForms 1.1, в которой был представлен ряд улучшений, достигла того же статуса 20 октября 2009 года.
В отличие от оригинальных веб-форм (изначально определенных в HTML), создатели XForms использовали подход модель–представление–контроллер (MVC). Модель состоит из одной или нескольких моделей XForms, описывающих данные формы, ограничения на эти данные и отправки. Представление описывает, какие элементы управления отображаются в форме, как они группируются вместе и к каким данным они привязаны. CSS можно использовать для описания внешнего вида формы.
Документ XForms может быть таким же простым, как веб-форма (только указав элемент отправки в разделе модели и разместив элементы управления в теле), но XForms включает в себя множество расширенных функций. Например, новые данные могут быть запрошены и использованы для обновления формы во время ее работы, что очень похоже на использование XMLHttpRequest / AJAX, за исключением отсутствия скриптов. Автор формы может проверять пользовательские данные на соответствие типам данных XML Schema , требовать определенные данные, отключать элементы управления вводом или изменять разделы формы в зависимости от обстоятельств, обеспечивать определенные связи между данными, вводить массивы данных переменной длины, выводить вычисленные значения, полученные из данных формы, предварительно заполнять записи с помощью XML-документа, реагировать на действия в реальном времени (по сравнению с временем отправки) и изменять стиль каждого элемента управления в зависимости от устройства, на котором они отображаются (браузер настольного компьютера по сравнению с мобильным телефоном по сравнению с текстовым и т. д.). Часто нет необходимости в каких-либо скриптах с такими языками, как JavaScript. Однако XForms включает в себя модель событий и действия для реализации более сложного поведения формы. [1] Действия и обработка событий задаются с использованием диалекта XForms XML, а не более распространенных языков сценариев, таких как JavaScript.
Как и веб-формы, XForms могут использовать различные не-XML-протоколы отправки ( multipart/form-data , application/x-www-form-urlencoded ), но новой функцией является то, что XForms может отправлять данные на сервер в формате XML. XML-документы также могут использоваться для предварительного заполнения данных в форме. Поскольку XML является стандартом, существует множество инструментов, которые могут анализировать и изменять данные при отправке. Существуют также аналогичные инструменты для устаревших форм. XForms сам по себе является диалектом XML, и поэтому может создавать и создаваться из других XML-документов с помощью XSLT . Используя преобразования, XForms можно автоматически создавать из XML-схем , а XForms можно преобразовывать в формы XHTML.
На момент написания этой статьи ни один широко используемый веб-браузер не поддерживал XForms изначально. Однако существуют различные плагины браузера, клиентские расширения и серверно-клиентские решения. Ниже перечислены некоторые реализации:
FormFaces , AJAXForms, XSLTForms, betterFORM, Chiba, Orbeon и Smartsite Forms основаны на технологии Ajax. Объем обработки на стороне сервера и клиента различается в зависимости от этих реализаций. Например, Ubiquity XForms, FormFaces и XSLTForms обеспечивают 100% обработку XForms на стороне клиента и обновления модели данных посредством чистой обработки Ajax по стандарту XForms. Другие используют серверную обработку Java/.NET XForms, перекодируя ее в разметку Ajax перед доставкой контента в браузер. Оба метода могут работать в разных браузерах. Каждая реализация существенно отличается в отношении зависимостей, масштабируемости, производительности, лицензирования, зрелости, сетевого трафика, возможностей автономной работы и совместимости с разными браузерами. Системные архитекторы должны оценивать эти ограничения в соответствии со своими потребностями, чтобы определить потенциальные риски и цели.
Плагины, такие как FormsPlayer и другие клиентские технологии, также могут иметь некоторые преимущества: поскольку они интегрируются в браузер, они будут работать с существующими серверными архитектурами, могут быть более отзывчивыми и требовать меньше обращений к серверу.
Компромисс между решениями на стороне сервера и клиентскими подключаемыми модулями заключается в том, что программное обеспечение поддерживается; либо каждый клиент должен установить требуемый подключаемый модуль, либо архитектура сервера должна измениться для поддержки технологии языка транскодера XForms. Теоретически возможно смешивать оба этих решения, например, тестируя браузер для реализации клиентской стороны XForms и обслуживая собственные XForms в этом случае, и по умолчанию используя серверное решение в других случаях.
Ubiquity XForms, FormFaces и XSLTForms предоставляют решение «без программного обеспечения» как на клиенте, так и на сервере: на клиенте не нужно устанавливать новое программное обеспечение, и решение может использоваться в сочетании с любой архитектурой на стороне сервера. Это возможно, поскольку FormFaces и Ubiquity XForms написаны на 100% на Ajax, а XSLTForms написаны на XSLT и на Ajax. Компромисс заключается в том, что по сравнению с другими решениями, больше кода изначально загружается на клиент (код может быть кэширован на клиенте), а FormFaces пока не поддерживает проверку XML-схемы. Кроме того, отправки XForms с поведением замены «всего» обычно не приводят к настоящим заменам страниц и, следовательно, нарушают нормальное поведение кнопки «Назад».
Поскольку XForms упрощает редактирование сложных XML-данных, использование XForms с собственными XML-базами данных, которые часто используют интерфейсы REST, имеет множество преимуществ . Сочетание трех технологий (XForms на клиенте, интерфейсы REST и XQuery на сервере) в совокупности известно как разработка приложений XRX . XRX известен своей простой архитектурой, которая использует XML как на клиенте, так и в базе данных и избегает преобразований в объектные или реляционные структуры данных. См. "XRX:Simple, Elegant, Disruptive".
XForms обеспечивает определенные преимущества при использовании на мобильных устройствах:
ODK [7] — это мобильная платформа сбора данных с открытым исходным кодом, которая использует подмножество W3C XForms 1.0, называемое ODK XForms. [8] ODK предоставляет библиотеки обработки XForms ODK на Java (JavaRosa) и JavaScript (enketo-core).
Xfolite — это облегченный клиент XForms для платформы J2ME. Первоначально он был создан в исследовательском центре Nokia и включает реализацию DOM и XPath 1.0, а также движок XForms, который практически полностью реализует спецификацию XForms 1.1. XFolite был выпущен как бета-версия программного обеспечения и не должен считаться готовым к использованию в производственном процессе. Однако он содержит зрелый движок XForms, который был разработан для работы с различными реализациями пользовательского интерфейса. Однако схемы XML и CSS выходят за рамки проекта. Xfolite имеет открытый исходный код и лицензируется по лицензии LGPL, но не разрабатывается активно.