Введение
XML-формат для создания веб-форм, графический пакет X Window System. XForms — это XML-формат, используемый для сбора данных из веб-форм. XForms был разработан как следующее поколение форм HTML/XHTML, но достаточно универсален для использования как самостоятельно, так и с языками представления, отличными от XHTML, для описания пользовательского интерфейса и набора общих задач манипулирования данными. XForms 1.0 (третье издание) был опубликован 29 октября 2007 года. Изначальная спецификация XForms получила статус официальной рекомендации W3C 14 октября 2003 года, а XForms 1.1, включающий ряд улучшений, достиг того же статуса 20 октября 2009 года.
the X Window System GUI package
XForms is an XML format used for collecting inputs from web forms. XForms was designed to be the next generation of HTML / XHTML forms, but is generic enough that it can also be used in a standalone manner or with presentation languages other than XHTML to describe a user interface and a set of common data manipulation tasks. XForms 1.0 (Third Edition) was published on 29 October 2007. The original XForms specification became an official W3C Recommendation on 14 October 2003, while XForms 1.1, which introduced a number of improvements, reached the same status on 20 October 2009.
Отличия от веб-форм
В отличие от оригинальных веб-форм (первоначально определенных в HTML), создатели XForms использовали подход model–view–controller (MVC). Модель состоит из одной или нескольких моделей XForms, описывающих данные формы, ограничения на эти данные и отправку. Представление описывает, какие элементы управления отображаются в форме, как они сгруппированы и к каким данным они привязаны. CSS может быть использован для описания внешнего вида формы. Документ XForms может быть таким же простым, как веб-форма (просто указав элемент отправки в разделе модели и разместив элементы управления в теле документа), но XForms включает в себя множество расширенных функций. Например, можно запросить новые данные и использовать их для обновления формы во время ее работы, подобно использованию XMLHttpRequest/AJAX, но без использования скриптов. Автор формы может проверять пользовательские данные на соответствие типам данных XML-схемы, требовать определенные данные, отключать элементы управления или изменять разделы формы в зависимости от обстоятельств, обеспечивать определенные взаимосвязи между данными, вводить массивы данных переменной длины, выводить вычисляемые значения, полученные из данных формы, предварительно заполнять поля с помощью XML-документа, реагировать на действия в реальном времени (в отличие от времени отправки) и изменять стиль каждого элемента управления в зависимости от устройства отображения (настольный браузер, мобильное устройство, текстовый режим и т. д.). Часто нет необходимости в использовании скриптов, таких как JavaScript. Однако XForms включает в себя модель событий и действия для реализации более сложного поведения формы. Действия и обработка событий определяются с использованием диалекта XForms XML, а не более распространенных языков скриптов, таких как JavaScript. Как и веб-формы, XForms может использовать различные протоколы отправки, отличные от XML (multipart/form-data, application/x-www-form-urlencoded), но новой функцией является возможность отправлять данные на сервер в формате XML. XML-документы также могут использоваться для предварительного заполнения данных в форме. Поскольку XML является стандартом, существует множество инструментов для анализа и изменения данных при отправке. Аналогичные инструменты существуют и для устаревших форм. XForms сам по себе является диалектом XML и, следовательно, может создаваться из других XML-документов и преобразовываться в них с помощью XSLT. С помощью преобразований XForms можно автоматически создавать из XML-схем, а XForms можно преобразовывать в формы XHTML.
Поддержка программного обеспечения
На момент написания статьи ни один широко используемый веб-браузер не поддерживает XForms нативно. Однако существуют различные плагины для браузеров, расширения на стороне клиента и серверно-клиентные решения. Ниже приведен список некоторых реализаций: Расширение Firefox XForms было частью проекта Mozilla. Поддержка XForms 1.0 SE неполная, но охватывает большую часть спецификации, за исключением повторения на основе атрибутов, используемого в HTML-таблицах. Расширение было доступно для Firefox 2 и Firefox 3, но не было обновлено для поддержки Firefox 4 и более поздних версий. В июле 2011 года ведущий разработчик сообщил, что поддержка XForms больше не будет обновляться. Поддержка XForms была окончательно прекращена в Firefox 19. IBM Lotus Forms поддерживает разработку и развертывание чистых XML-форм на основе XForms. Доступны пробные версии среды визуального проектирования на основе Eclipse и клиентского просмотрщика, который может запускать формы на основе XForms как в веб-браузере, так и в виде автономного настольного приложения. OpenOffice.org версии 2.0 и выше, а также LibreOffice поддерживают XForms.
The Firefox XForms extension was part of the Mozilla Project. XForms 1.0 SE support is not complete but covers most of the specification with a notable exception of attribute based repeating used in HTML tables. The extension was available for both Firefox 2 and Firefox 3, but is not upgraded to support Firefox 4 and higher. In July 2011 the lead developer wrote that XForms support would no longer get updated. Support for XForms was eventually deprecated in Firefox 19. IBM Lotus Forms supports development and deployment of XForms based pure XML forms. Trial downloads are available of an Eclipse based visual design environment and a client side viewer that can run XForms based forms both in the web browser and as a standalone desktop application. OpenOffice. org versions 2.0 and greater and LibreOffice support XForms.
Сравнение технологий реализации
Формы FormFaces, AJAXForms, XSLTForms, betterFORM, Chiba, Orbeon и Smartsite Forms основаны на технологии Ajax. Объем обработки на стороне сервера и клиента варьируется в зависимости от реализации. Например, Ubiquity XForms, FormFaces и XSLTForms обеспечивают 100% обработку XForms на стороне клиента и обновление модели данных посредством чистой обработки Ajax в соответствии со стандартом XForms. Другие реализации используют серверную обработку XForms на Java/.NET с последующим транскодированием в Ajax-разметку перед отправкой контента в браузер. Оба подхода совместимы с различными браузерами. Каждая реализация существенно отличается по зависимостям, масштабируемости, производительности, лицензированию, степени зрелости, сетевому трафику, возможности автономной работы и кроссбраузерной совместимости. Системным архитекторам следует оценивать эти ограничения в соответствии со своими потребностями, чтобы определить потенциальные риски и цели. Плагины, такие как FormsPlayer, и другие клиентские технологии также могут быть полезны: поскольку они интегрируются в браузер, они работают с существующими серверными архитектурами, могут быть более отзывчивыми и требуют меньшего количества обращений к серверу. Выбор между серверными и клиентскими плагин-решениями определяется местом обслуживания программного обеспечения: либо каждый клиент должен установить необходимый плагин, либо серверная архитектура должна быть изменена для поддержки языка транскодера XForms. Теоретически возможно комбинировать оба подхода, например, проверять браузер на наличие клиентской реализации XForms и в этом случае использовать нативные XForms, а в остальных случаях переходить к серверному решению. Ubiquity XForms, FormFaces и XSLTForms предоставляют решение, не требующее установки дополнительного программного обеспечения ни на клиенте, ни на сервере: не требуется установка нового программного обеспечения на стороне клиента, и решение может использоваться с любой серверной архитектурой. Это возможно, поскольку FormFaces и Ubiquity XForms написаны на 100% на Ajax, а XSLTForms – на XSLT и Ajax. Компромиссом является то, что по сравнению с другими решениями, изначально на клиент загружается больший объем кода (который может быть кэширован на клиенте), а FormFaces пока не поддерживает валидацию по XML-схеме. Кроме того, отправка XForms с поведением "заменить все" обычно не приводит к полноценной замене страницы и, следовательно, нарушает стандартную работу кнопки "Назад".
Архитектура приложений XRX
Поскольку XForms упрощает редактирование сложных XML-данных, использование XForms с нативными XML-базами данных, которые часто используют REST-интерфейсы, имеет множество преимуществ. Сочетание трех технологий (XForms на стороне клиента, REST-интерфейсы и XQuery на стороне сервера) в совокупности известно как разработка приложений XRX. XRX отличается простой архитектурой, использующей XML как на стороне клиента, так и в базе данных, и избегающей преобразований в объектные или реляционные структуры данных. См. "XRX: простой, элегантный, революционный".
ОДК
ODK — это платформа для сбора мобильных данных с открытым исходным кодом, использующая подмножество W3C XForms 1.0, известное как ODK XForms. ODK предоставляет библиотеки для обработки ODK XForms на языках Java (JavaRosa) и JavaScript (enketo core).
Ксфолит
Xfolite – это легковесный клиент XForms для платформы J2ME. Он был изначально разработан в Nokia Research Center и включает в себя реализацию DOM и XPath 1.0, а также движок XForms, который почти полностью соответствует спецификации XForms 1.1. Xfolite был выпущен как бета-версия и не должен рассматриваться как готовый к использованию в производственной среде. Тем не менее, он содержит зрелый движок XForms, разработанный для работы с различными реализациями пользовательского интерфейса. XML-схемы и CSS, однако, не входят в область действия проекта. Xfolite имеет открытый исходный код и распространяется под лицензией LGPL, но его дальнейшая разработка не ведется.