XForms являются альтернативой традиционным
веб-формам, и позволяют использовать их на множестве платформ и
браузеров, а также реализовывать нестандартные представления форм, например,
в виде PDF-документа.
Первое существенное отличие XForms заключается в том, как форма отсылается
клиенту. Руководство XForms для HTML-верстальщиков
содержит детальное описание создания XForms. Для того, чтобы очертить
основную идею руководства, приведем несколько простых примеров.
Пример 37-1. Простая XForms для поисковой формы <h:html xmlns:h="http://www.w3.org/1999/xhtml"
xmlns="http://www.w3.org/2002/xforms">
<h:head>
<h:title>Search</h:title>
<model>
<submission action="http://example.com/search"
method="post" id="s"/>
</model>
</h:head>
<h:body>
<h:p>
<input ref="q"><label>Find</label></input>
<submit submission="s"><label>Go</label></submit>
</h:p>
</h:body>
</h:html> |
|
Приведенная выше форма отображает текстовое поле для ввода (названное q)
и кнопку для оправки формы, при нажатии на которую все введенные данные
будут отправлены скрипту, указанному в поле action.
Тут мы подошли к еще одному существенному различию с точки зрения вашего
веб-приложения. Стандартная HTML-форма отправляет данные как
application/x-www-form-urlencoded, а XForms
для передачи данных использует разметку XML.
Если вы решили работать с XForms, скорее всего вы захотите получить
отправленные пользователем данные в формате XML. В таком случае обратите внимание
на переменную $HTTP_RAW_POST_DATA, в ней содержится
XML-документ, сгенерированный браузером, который в дальнейшем можно
обработать предпочитаемым вами движком XSLT или парсером XML.
Если XML-разметка вас не интересует, и вы хотите, чтобы передаваемые данные
были помещены в стандартный массив $_POST, вы можете
указать клиентскому браузеру на необходимость отправлять данные
в формате application/x-www-form-urlencoded.
Для этого установите атрибут method значением
urlencoded-post.
Пример 37-2. Использование XForm совместно с массивом $_POST <h:html xmlns:h="http://www.w3.org/1999/xhtml"
xmlns="http://www.w3.org/2002/xforms">
<h:head>
<h:title>Search</h:title>
<model>
<submission action="http://example.com/search"
method="urlencoded-post" id="s"/>
</model>
</h:head>
<h:body>
<h:p>
<input ref="q"><label>Find</label></input>
<submit submission="s"><label>Go</label></submit>
</h:p>
</h:body>
</h:html> |
|
Замечание:
В дополнение к вышесказанному следует заметить, что большое количество браузеров не поддерживают
XForms. Если приведенные примеры потерпели неудачу, проверьте версию используемого
вами браузера.