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



              

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



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


Когда пользователь запускает приложение Wheatherlnfo, дека Wheather.wml предлагает пользователю ввести почтовый индекс, город, штат или выбрать опциюпомощи. Основываясь на выборе пользователя, приложение осуществляет переход к локальной карте, которая находится в пределах текущего файла или деки.Дека Wheather.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="Weather" title="Weather Info"> <onevent type="onenterforward"> <refresh> <setvar name="ZipCode" value="" /> <setvar name="CiryName" value="" /> <setvar name="StateName" value="" /> </refresh> </onevent> <onevent type="onenterbackward"> <refresh> <setvar name="ZipCode" value="" /> <setvar name="CityName" value="" /> <setvar name="StateName" value="" /> </refresh> </onevent> <p align="center"> Weather Info<br/> Search by: </p> <p align="left"> <select title="Main"> <option onpick="#GetZipCode">Zip Code</option> <option onpick="#GetCity">City</option> <option onpick="#GetState">State</option> <option onpick="../Weather/Wxhelp.wml">Help</option> </select> </p> </card> <card id="GetZipCode"> <do type="accept"> <go href="../waplibcgi/ZipWeatherWML.pl ?$(ZipCode)" /> </do> <p align="center"> Weather Info<br/> </p> <p align="left"> Enter Zip Code: <input name="ZipCode" maxlength="6" type="text" format="NNNNN" /> </p> </card> <card id="GetCity"> <do type="accept"> <go href="../waplibcgi/CityWeatherWML.pl ?$(CityName)" /> </do> <p align="center"> Weather Info<br/> </p> <p align="left"> Enter City: <input name="CityName" type="text" format="*M" /> </p> </card> <card id="GetState"> <do type="accept"> <go href="../waplibcgi/StateWeatherWML.pl ?$(StateName)" /> </do> <p align="center"> Weather Info<br/> </p> <p align="left"> Enter State: <input name="StateName" type="text" format="AA" /> </p> </card> </wml>
Так же как и во всех деках формата WML, первые два ее элемента сообщают браузеру, какую из версий спецификации WAP поддерживает данное приложение.В нашем случае WML-страница поддерживает версию 1.0 языка XML и версию 1.1описания типа документа (DTD), разработанного ассоциацией WAP Forum. <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
Далее, за информацией о версиях, каждый WML-файл начинается с тега <wml>. Вконце каждого файла вводят </wml>, что означает окончание исходного кодаприложения. За <wml> следуют теги <head> и </head>, внутри которых находитсяинформация о самом исходном коде, включая метаданные и информацию обуправлении доступом. Многие программисты называют метаданные «данными оданных». Другими словами, в этом случае метаданные, которые считывает и обрабатывает браузер, сообщают ему, как трактовать данные. <head> <meta http-equiv="Cache-Control" content="max-age=0" forua="true"/> </head>
Элемент <meta> позволяет точно определить метаинформацию для исходногофайла. В нашем случае строка http-eguiv="Cache-Control" сообщает браузеруWAP, что эта часть метаинформации используется системой кэширования памяти. Аналогично, строка content=max-age=0 сообщает браузеру, что максимальноевремя, в течение которого будет кэшироваться этот файл, равно нулю секунд;значит, браузер не будет кэшировать данные, а загружать данные с сервера каждый раз, когда они будут запрошены. Для этой книги значение нуля было выбрано для содействия процессу обучения читателя. При выборе нуля каждый раз, когда будут происходить изменения, они будут передаваться на телефон. В реальном приложении статическое меню, подобное этому, можно использовать поумолчанию в течение 30 дней. Последняя строка forua="true" определяет, чтозначение Cache-Control предназначено для телефона и не может быть измененокаким-либо промежуточным агентом.
Приложение использует три переменные для хранения введенных пользователем данных: ZipCode, CityName и StateName. При запуске приложения карта использует элемент <onevent> для очистки текущих значений каждой из переменных при нажатии пользователем кнопки Next (Далее) или кнопки Previous (Предыдущий) на телефоне. После этого карта использует элемент <select> для приглашения пользователя к вводу желаемой им опции: <select title="Main"> <option onpick="#GetZipCode">Zip Code</option> <option onpick="#GetCity">City</option> <option onpick="#GetState">State</option> <option onpick="../Weather/Wxhelp.wml">Help</option> </select>
Внутри элемента <select> символы фунта (#), предшествующие первым тремопциям, сообщают вам, что карта, например, #GetZipCode, находится внутри текущей деки формата WML. В отличие от этого, карта для опции помощи Help находится в отдельной деке.
Внутри каждой из карт приложение использует элемент <input> для предоставления пользователю возможности ввода необходимых данных, таких, как Название города или почтовый индекс. Если вы обратите внимание на элемент<input>, то увидите, что поле format определяет формат соответствующих данных. К примеру, <input> внутри карты GetZipCode использует формат NNNNN дляпредоставления возможности ввода только 5 числовых символов.
Как было сказано, если пользователь выбирает опцию Help, приложение загружает карту из деки на диске, которая в нашем случае находится в файлеWxhelp.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> <do type="accept"> <go href="../Weather/Weather.wml" /> </do> <p align="left" mode="wrap"> For this demo<br/> Zip Codes are:<br/> 87101, 87701, 89101, 89501<br/> Cities are:<br/> Albuquerque, NM<br/> Las Vegas, NM<br/> Las Vegas, NV<br/> Reno, NV<br/> States are:<br/> Nevada<br/> New Mexico<br/> </p> </card> </wml>
В карте используется тег абзаца <р> для отображения списка доступных почтовых индексов, городов и штатов в нашей демо-версии приложения. Если пользователь производит нажатие на кнопку Accept (Принять), приложение используетэлемент <do> для загрузки основной деки Weather.wml. При вводе пользователемгорода, штата или почтового индекса, приложение вызывает соответствующийсценарий языка Perl.









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