Корни некоторых положений, реализованных в XForms, могут обнаружены в стандартном обобщенном языке разметки SGML (Standardized General Markup Language). SGML был разработан, чтобы отделить текстовое содержимое от его представления - для этого содержание заключалось в машиночитаемые теги. А это, помимо всего прочего, означало, что разработкой содержания и представления могли заниматься разные люди. Наконец, этот язык обеспечивал простоту в распространении и совместимости.
Язык гипертекстовой разметки HTML (Hypertext Markup Language), являющийся типом SGML-документа, также обрамляет содержимое в значимые теги. Однако, HTML отошел от принципа отделения содержимого от представления. Одновременно с превращением Internet в общедоступную технологию этот язык, благодаря тому, что он обеспечивал относительную простоту создания Web-страниц, получил практически повсеместное признание. В результате стандартизации HTML-тегов появился язык, который был понятен любому Web-браузеру. Однако, по мере того, как развитие бизнеса заставляло Web-разработчиков создавать более сложные динамические сайты, ограничения языка становились все более очевидными.
Листинг 1. Пример HTML-формы
...<!--Ellipsis represent parts that are missing-->
<FORM action="http://www.example/ " method="post">
<P>
<INPUT type="radio" name="HairColor" value="Brown">Brown<BR>
</P>
</FORM>
Обратите внимание на то, что name="HairColor" и value="Brown" в Листинге 1 установлены в пределах того же кода, что создает и пользовательский интерфейс. Кроме того, этот HTML-фрагмент жестко установленным образом программирует тип управляющего элемента - в данном случае радио-кнопки - который появится в пользовательском интерфейсе. Поэтому данная форма не могла бы корректно изобразиться на платформах, не поддерживающих радио-кнопки. Поскольку HTML-формы могут включать вложенные данные и жестко закодированные решения, изменения представления отдельной формы является непростой задачей. Кроме того, стандартизация HTML означала, что разработчик не мог расширить набор HTML-тегов, то есть возможность настраивать язык и улучшить его выразительность оказывалась ограниченной.
С целью решения указанных проблем были разработаны расширяемый язык разметки XML (Extensible Markup Language) и расширяемый язык стилей XSL (Extensible Stylesheet Language). В отличие от HTML, объединение XML-документов с XSL-преобразованиями позволяет отделить данные от их представления. Поля, такие как name и value, могут храниться как XML-данные, а представление может создаваться посредством преобразования XML-документа в HTML с помощью XSL-преобразования. Благодаря этому разработчики оказываются избавленными от множества жестко запрограммированных решений, которые неизбежны при использовании HTML-форм. Одни и те же XML-данные могут быть представлены самыми различными способами, как правило, для этого используются различные таблицы стилей XSL; и, наоборот, одиночное XSL-преобразование может изобразить неоднородный XML в единообразном стиле. Помимо этого, XML/ XSL предоставляет разработчикам расширяемость, которой HTML не обладает.
Однако, хотя HTML, генерированное путем применения XSL-преобразования к XML-содержимому, обладает целым рядом преимуществ по сравнению со статическим HTML, эта дополнительная функциональность имеет свою цену. Во-первых, сервер, выполняющий преобразование XML в HTML, не будет работать так же хорошо, как сервер, который обслуживает только статический HTML. Для самих преобразований необходимо несколько циклов работы сервера; кроме того, формы, возможно, потребуют несколько итераций обмена данными между клиентом и сервером. Во-вторых, разработка XML с XSL-преобразованием выдвигает особые требования к профессиональному уровню программиста, в данном случае нужно гораздо больше опыта, чем для работы с HTML.