Пособие по написанию 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 реализуется с помощью следующего программного кода: <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <head> <meta http-equiv="Cache-Control" content="max-age=0" forua="true"/> </head> <card id="SmartHouse"> <onevent type="onenterforward"> <go href="SmartHouseScript.wmls#Initialize()" /> </onevent> <p align="center"> Smart House </p> <p align="left" mode="nowrap"> <select> <option>Bedroom is $(Bedroom) <onevent type="onpick"> <go href="SmartHouseScript.wmls #Bedroom()" /> </onevent> </option> <option>Kitchen is $(Kitchen) <onevent type="onpick"> <go href="SmartHouseScript.wmls #Kitchen()" /> </onevent> </option> <option>Living is $(Living) <onevent type="onpick"> <go href="SmartHouseScript.wmls #Living()" /> </onevent> </option> <option>Office is $(Office) <onevent type="onpick"> <go href="SmartHouseScript.wmls #Office()" /> </onevent> </option> <option>Outside is $(Outside) <onevent type="onpick"> <go href="SmartHouseScript.wmls #Outside()" /> </onevent> </option> </select> </p> </card> </wml>
Как и во всех 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, которую должен вызывать браузер при изменении определенной установки в доме.









Содержание    Назад    Вперед