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

         

Подробнее о приложении Weatherlnfo



Подробнее о приложении Weatherlnfo

Когда пользователь запускает приложение Wheatherlnfo, дека Wheather.wml предлагает пользователю ввести почтовый индекс, город, штат или выбрать опциюпомощи. Основываясь на выборе пользователя, приложение осуществляет переход к локальной карте, которая находится в пределах текущего файла или деки.Дека Wheather.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="Weather" title="Weather Info"&gt

&ltonevent type="onenterforward"&gt

&ltrefresh&gt &ltsetvar name="ZipCode" value="" /&gt &ltsetvar name="CiryName" value="" /&gt &ltsetvar name="StateName" value="" /&gt &lt/refresh&gt

&lt/onevent&gt

&ltonevent type="onenterbackward"&gt

&ltrefresh&gt &ltsetvar name="ZipCode" value="" /&gt &ltsetvar name="CityName" value="" /&gt &ltsetvar name="StateName" value="" /&gt &lt/refresh&gt



&lt/onevent&gt

&ltp align="center"&gt

Weather Info&ltbr/&gt Search by:

&lt/p&gt

&ltp align="left"&gt

&ltselect title="Main"&gt

&ltoption onpick="#GetZipCode"&gtZip Code&lt/option&gt &ltoption onpick="#GetCity"&gtCity&lt/option&gt &ltoption onpick="#GetState"&gtState&lt/option&gt &ltoption onpick="../Weather/Wxhelp.wml"&gtHelp&lt/option&gt

&lt/select&gt

&lt/p&gt




&lt/card&gt

&ltcard id="GetZipCode"&gt

&ltdo type="accept"&gt &ltgo href="../waplibcgi/ZipWeatherWML.pl ?$(ZipCode)" /&gt &lt/do&gt

&ltp align="center"&gt

Weather Info&ltbr/&gt

&lt/p&gt

&ltp align="left"&gt

Enter Zip Code:

&ltinput name="ZipCode" maxlength="6" type="text" format="NNNNN" /&gt

&lt/p&gt

&lt/card&gt

&ltcard id="GetCity"&gt

&ltdo type="accept"&gt &ltgo href="../waplibcgi/CityWeatherWML.pl ?$(CityName)" /&gt &lt/do&gt

&ltp align="center"&gt

Weather Info&ltbr/&gt

&lt/p&gt

&ltp align="left"&gt

Enter City:

&ltinput name="CityName" type="text" format="*M" /&gt

&lt/p&gt

&lt/card&gt

&ltcard id="GetState"&gt

&ltdo type="accept"&gt &ltgo href="../waplibcgi/StateWeatherWML.pl ?$(StateName)" /&gt &lt/do&gt

&ltp align="center"&gt

Weather Info&ltbr/&gt

&lt/p&gt

&ltp align="left"&gt

Enter State:

&ltinput name="StateName" type="text" format="AA" /&gt

&lt/p&gt

&lt/card&gt

&lt/wml&gt

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

&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

Далее, за информацией о версиях, каждый WML-файл начинается с тега <wml>.


Вконце каждого файла вводят </wml>, что означает окончание исходного кодаприложения. За <wml> следуют теги <head> и </head>, внутри которых находитсяинформация о самом исходном коде, включая метаданные и информацию обуправлении доступом. Многие программисты называют метаданные «данными оданных». Другими словами, в этом случае метаданные, которые считывает и обрабатывает браузер, сообщают ему, как трактовать данные.

&lthead&gt

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

&lt/head&gt

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

когда будут происходить изменения, они будут передаваться на телефон. В реальном приложении статическое меню, подобное этому, можно использовать поумолчанию в течение 30 дней. Последняя строка forua="true" определяет, чтозначение Cache-Control предназначено для телефона и не может быть измененокаким-либо промежуточным агентом.

Приложение использует три переменные для хранения введенных пользователем данных: ZipCode, CityName и StateName. При запуске приложения карта использует элемент <onevent> для очистки текущих значений каждой из переменных при нажатии пользователем кнопки Next (Далее) или кнопки Previous (Предыдущий) на телефоне. После этого карта использует элемент <select> для приглашения пользователя к вводу желаемой им опции:

&ltselect title="Main"&gt



&ltoption onpick="#GetZipCode"&gtZip Code&lt/option&gt &ltoption onpick="#GetCity"&gtCity&lt/option&gt &ltoption onpick="#GetState"&gtState&lt/option&gt &ltoption onpick="../Weather/Wxhelp.wml"&gtHelp&lt/option&gt

&lt/select&gt

Внутри элемента <select> символы фунта (#), предшествующие первым тремопциям, сообщают вам, что карта, например, #GetZipCode, находится внутри текущей деки формата WML. В отличие от этого, карта для опции помощи Help находится в отдельной деке.

Внутри каждой из карт приложение использует элемент <input> для предоставления пользователю возможности ввода необходимых данных, таких, как Название города или почтовый индекс. Если вы обратите внимание на элемент<input>, то увидите, что поле format определяет формат соответствующих данных. К примеру, <input> внутри карты GetZipCode использует формат NNNNN дляпредоставления возможности ввода только 5 числовых символов.

Как было сказано, если пользователь выбирает опцию Help, приложение загружает карту из деки на диске, которая в нашем случае находится в файлеWxhelp.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&gt

&ltdo type="accept"&gt &ltgo href="../Weather/Weather.wml" /&gt &lt/do&gt

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

For this demo&ltbr/&gt

Zip Codes are:&ltbr/&gt 87101, 87701, 89101, 89501&ltbr/&gt

Cities are:&ltbr/&gt Albuquerque, NM&ltbr/&gt Las Vegas, NM&ltbr/&gt Las Vegas, NV&ltbr/&gt Reno, NV&ltbr/&gt

States are:&ltbr/&gt Nevada&ltbr/&gt New Mexico&ltbr/&gt

&lt/p&gt

&lt/card&gt

&lt/wml&gt

В карте используется тег абзаца <р> для отображения списка доступных почтовых индексов, городов и штатов в нашей демо-версии приложения. Если пользователь производит нажатие на кнопку Accept (Принять), приложение используетэлемент <do> для загрузки основной деки Weather.wml. При вводе пользователемгорода, штата или почтового индекса, приложение вызывает соответствующийсценарий языка Perl.


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