Пособие по написанию WAP-сайтов

         

Рассмотрение приложения SmartHouseScript.wml



Рассмотрение приложения SmartHouseScript.wml

При запуске приложения SmartHouseScript браузер загружает WML-страницу, содержащуюся в файле SmartHouseScript.wml, которая вначале инициализирует домашние установки, устанавливая их случайным образом в состояния on (Вкл) иoff (Выкл). Если вы просмотрите WML-страницу, то обнаружите, что в ней имеется много ссылок, подобных приводимой ниже. Эта ссылка активизирует функцию, находящуюся в отдельном WMLScript-файле:

<go href="SmartHouseScript.wmls#Initialize()" />

В данном случае элемент отдает браузеру команду выполнить ветвление и перейти к функции Initialize (Инициализация), находящейся в файлеSmartHouseScript.wmls. После того как функция выполнит обработку, для которой она предназначена, управление возвращается в текущее место программного кода. Как вы увидите, для присвоения состояния on (Вкл) или off (Выкл) каждой из домашних установок функция initialize использует генератор случайных чисел.

По мере знакомства с WML-страницей вы также встретите ряд элементов, примеркоторых приводится ниже. Здесь элемент ссылается на значение, хранимое впеременной:

<option>Bedroom is $(Bedroom)

В данном случае программный код ссылается на переменную Bedroom, котораяможет принимать значение On (Вкл) или Off (Выкл). При первоначальном запуске сценария функция initialize, находящаяся в WMLScript-файле, присваиваеткаждой переменной ее исходное значение. Каждый раз, когда пользователь изменяет состояние, WML-страница вызывает связанную с изменяемой установкойфункцию, которая, в свою очередь, обновляет значение. ПриложениеSmartHouseScript.wml реализуется с помощью следующего программного кода:

&lt?xml version="1.0"?&gt &lt!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"&gt

&ltwml&gt

&lthead&gt

&ltmeta http-equiv="Cache-Control" content="max-age=0" forua="true"/&gt






&lt/head&gt

&ltcard id="SmartHouse"&gt

&ltonevent type="onenterforward"&gt

&ltgo href="SmartHouseScript.wmls#Initialize()" /&gt

&lt/onevent&gt

&ltp align="center"&gt

Smart House

&lt/p&gt

&ltp align="left" mode="nowrap"&gt

&ltselect&gt

&ltoption&gtBedroom is $(Bedroom)

&ltonevent type="onpick"&gt

&ltgo href="SmartHouseScript.wmls #Bedroom()" /&gt

&lt/onevent&gt

&lt/option&gt

&ltoption&gtKitchen is $(Kitchen)

&ltonevent type="onpick"&gt

&ltgo href="SmartHouseScript.wmls #Kitchen()" /&gt

&lt/onevent&gt

&lt/option&gt

&ltoption&gtLiving is $(Living)

&ltonevent type="onpick"&gt

&ltgo href="SmartHouseScript.wmls #Living()" /&gt

&lt/onevent&gt

&lt/option&gt

&ltoption&gtOffice is $(Office)

&ltonevent type="onpick"&gt

&ltgo href="SmartHouseScript.wmls #Office()" /&gt

&lt/onevent&gt

&lt/option&gt

&ltoption&gtOutside is $(Outside)

&ltonevent type="onpick"&gt

&ltgo href="SmartHouseScript.wmls #Outside()" /&gt

&lt/onevent&gt

&lt/option&gt

&lt/select&gt

&lt/p&gt

&lt/card&gt

&lt/wml&gt

Как и во всех WML-страницах, первые два элемента рассматриваемой WML-страницы сообщают WAP-браузеру (а также программистам) версию WAP-спецификации поддерживаемой приложением. В данном случае WML-страницасовместима с XML 1.0 и описанием типа документа (DTD) версии 1.1, разработанным ассоциацией WAP Forum.

Любая WML-страница, размещаемая после информации о версии, начинается стега <WML>. В конце каждой WM L-страницы должен находиться соответствующийтег </WML>, который завершает элементы WML-страницы.


Теги <HEAD> и </HEAD>,располагающиеся после тега <WML>, позволяют указывать данные о WML-странице, включая метаданные и информацию управляющую доступом. Многиепрограммисты рассматривают метаданные как «данные о данных». Другими словами, метаданные в нашем примере, считываемые и обрабатываемые браузером,сообщают браузеру, что надо делать с данными карт.

Элемент <meta> позволяет определять для WML-страницы метаинформацию. Внашем случае параметр http-equiv=Cache-Control сообщает WAP-браузеру, чтоданная часть метаинформации относится к системе кэширования памяти. Аналогично, параметр content=max-age=0 сообщает браузеру, что максимальное время, в течение которого должно выполняться кэширование WML-страницы, равнонулю секунд; то есть, браузер должен не запоминать, а повторно загружать данные с сервера каждый раз, когда поступает запрос. Для данной книги нулевоезначение было выбрано, чтобы помочь читателю в разработке программы. Привыборе нулевого значения каждый раз, когда происходит изменение, это изменение передается на телефон. В реально эксплуатируемом приложении статическое меню, подобное рассматриваемому здесь, по-видимому, должно использовать интервал хранения, установленный по умолчанию, равным 30 дням. Наконец, параметр forua="true" определяет, что данное значение Cache-Controlпредназначено для телефона и не должно удаляться каким-либо промежуточнымагентом.

Хотя WML-страница несколько длинновата, она достаточно проста. По сути дела,в ней используется один элемент <select>, предоставляющий пользователю возможность указывать пункт данных, который необходимо обновить. Внутри элемента <select> для каждой установки вложен элемент <option>, предписывающий браузеру отображать текущее состояние установки и указывающий функциюWMLScript, которую должен вызывать браузер при изменении определенной установки в доме.


Содержание раздела