Поскольку XForms-модель представляет содержание формы, она не изменяется от представления к представлению. Модель состоит из данных формы и логических компонентов. Данные формы находятся в пределах экземпляра [instance] (подробнее о нем ниже); он включает все поля формы, а также временное хранилище. Логические компоненты формы определяют ее поведение. Эти логические компоненты описываются обработчиками событий (event handlers), связыванием данных (data bindings) и информацией об инициализации (submission information) - обо всем этом речь пойдет в следующих разделах. XForms предусматривают определение многочисленных моделей в пределах одной и той же формы. Это удобно, если вы хотите, чтобы одно приложение поддерживало множество функций. Например, личный портал может состоять из модели биржевого аппарата, модели календаря и так далее. Если вы описали множество моделей, можете воспользоваться атрибутом id, чтобы идентифицировать каждую из них. В Листинге 3 приведен скелет кода для формы заказа: Листинг 3. Скелет кода для формы заказа <HTML xmlns="http://www.w3.org/1999/xhtml" Обратите внимание, что модель, как и говорилось выше, определена в пределах заголовка документа. Следующим шагом будет объявление данных экземпляра. Более подробная информация о XForms-модели приведена в Спецификации.
xmlns:xforms=http://www.w3.org/2002/01/xforms
xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:xlink="http://www.w3.org/1999/xlink">
<head>
<title>XForms: Order Form</title>
<xforms:model>
... <!--Instance and Logical Components-->
</xforms:model>
</head>
<body>
... <!--User Interface goes here-->
</body>
</HTML>
Экземпляр
Данные экземпляра определяются в пределах модели. Они представляют все ту информацию, которая передается в обработчик, и любое временное хранилище, которое необходимо в пределах модели. Каждый экземпляр, однако, может содержать только одиночное дерево XML-данных - другими словами, может быть только один корневой узел.
Экземпляр определятся локально в пределах модели или указывает с помощью URI на существующие XML-данные, хранящиеся на удаленной машине. В Листинге 4 показан экземпляр, OrderInfo, определенный локально в форме заказа.
-
PersonalInfo содержит все информацию, которую вы хотите получить от пользователя;
-
PriceInfo включает сведения, необходимые для вычисления счета;
-
в TaxInfo содержится статическая информация о ставках налога в некоторых штатах (для простоты этот пример определяет налоговою ставку только для штатов Нью-Йорк, Коннектикут и Нью-Джерси);
-
ShoppingCart - это список товаров, которые пользователь собирается приобрести.
Как правило, под данными формы принято понимать информацию, которую пользователь вводит в форму. Тем не менее, разделы PriceInfo и TaxInfo демонстрируют, что данные экземпляра можно использовать и как временные переменные, и как постоянную информацию, соответственно.
В Листинге 5 показано, как можно реализовать экземпляр при обращении к удаленному XML-ресурсу.