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-схемы, запрашивать определенные данные, отключать элементы управления вводом или изменять разделы формы в зависимости от обстоятельств, устанавливать определенные отношения между данными, вводить массивы данных переменной длины, выводить вычисленные значения, полученные из данных формы, предварительно заполнять записи с помощью XML-документа, реагировать на действия в режиме реального времени (а не во время отправки) и изменять стиль каждого элемента управления в зависимости от устройства, на котором они отображаются (настольный браузер по сравнению с мобильным или только текстовым и т. д.). Часто нет необходимости в написании сценариев на таких языках, как JavaScript. Однако XForms действительно включает в себя модель событий и действия для реализации более сложных форм поведения. Действия и обработка событий указываются с использованием диалекта XML XForms, а не более распространенных языков сценариев, таких как 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: простой, элегантный, разрушительный ».
XForms дает определенные преимущества при использовании на мобильных устройствах:
Enketo - это клиент XForms в браузере, созданный с использованием javascripts.
Xfolite - это облегченный клиент XForms для платформы J2ME. Первоначально он был создан в Nokia Research Center и включает в себя реализацию DOM и XPath 1.0, а также механизм XForms, который практически полностью реализует спецификацию XForms 1.1. XFolite был выпущен в виде бета-версии программного обеспечения и не должен считаться готовым к использованию в производстве. Тем не менее, он содержит зрелый движок XForms, который был разработан для работы с различными реализациями пользовательского интерфейса. Однако схемы XML и CSS выходят за рамки проекта. Xfolite имеет открытый исходный код и распространяется под лицензией LGPL, но в дальнейшем активно не развивается.
JavaRosa - это клиент XForms, написанный на Java Mobile Edition (J2ME), который поддерживает широкий спектр устройств, от топовых смартфонов и КПК с большими экранами и большим объемом памяти до недорогих устройств, таких как Nokia 6085 и 2630. Создание JavaRosa, которую можно использовать на устройствах с низким уровнем ресурсов, является одним из главных приоритетов проекта. JavaRosa 1.0 Alpha была выпущена в сентябре 2010 года.
ODK Collect является частью Open Data Kit и является клиентом XForms для устройств Android. Клиент отображает XForm в последовательном порядке, подчиняясь логике формы, ограничениям ввода и повторяющимся подструктурам. Пользователи работают с подсказками и сохраняют отправку как завершенную или частично завершенную (с возможностью более позднего редактирования), а также могут записывать изображения, а также свое местоположение, используя встроенную камеру телефона и устройство GPS, соответственно.
Group Complete - это мобильная система сбора данных, в которую входит Group Complete Mobile (GC Mobile), клиент XForms для устройств Android. GC Mobile предоставляет интерфейс для создания XForms на мобильном устройстве, а также ввода данных XForms с возможностями, аналогичными ODKCollect. Формы и данные хранятся в базах данных CouchDB, что позволяет мобильным работникам вносить изменения в формы и данные в автономном режиме, совместно работать над вводом данных и обмениваться собранными данными с членами команды и потребителями данных бэк-офиса в режиме реального времени. Group Complete совместима со всеми основными системами ODK. Group Complete была прекращена в марте 2012 года, а код был выпущен в феврале 2013 года как открытый исходный код.