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

       

Подробнее о сценариях языка Perl,используемых в приложении



Подробнее о сценариях языка Perl,используемых в приложении

Когда пользователь выбирает опцию Zip Code (Почтовый индекс) в приложенииWeatherlnfo, в исходном коде ему предлагается ввести почтовый индекс. Далее запускается сценарий языка Perl, который этот индекс анализирует. Если пользователем введен разрешенный индекс (в нашем случае один из нескольких известных приложению), сценарий открывает, а затем печатает соответствующий файло погоде (вывод которого перехватывается браузером). Если пользователь ввелнедоступный почтовый индекс, сценарий открывает файл Unknown.wml, исходный код которого производит отображение сообщения об ошибке. Исходныйкод сценария языка Perl ZipWeatherWML.pl приведен ниже:

#!/usr/bin/perl

print "Content-type: text/vnd.wap.wml\n\n";

$Buffer = $ENV{'QUERY_STRING'};

if ($Buffer eq "87101") { $FileName = "../Weather/87101.wml"; } elsif ($Buffer eq "87701") { $FileName = "../Weather/87701.wml"; } elsif ($Buffer eq "89101") { $FileName = "../Weather/89101.wml"; } elsif ($Buffer eq "89501") { $FileName = "../Weather/89501.wml"; } else { $FileName = "../Weather/Unknown.wml"; }

open (WeatherInfo, $FileName);

while (&ltWeatherInfo&gt) { print; }

close (WeatherInfo);

Первая строка сценария представляет собой комментарий, сообщающий интерпретатору командной строки, где находится интерпретатор языка Perl. Втораястрока информирует браузер (который перехватывает вывод) о том, что результатом работы сценария будет создание исходного кода формата WML. Далее используется функция $ENV для извлечения параметра почтового индекса.

После получения сценарием этого индекса используется серия конструкций if-else для определения, является ли введенный индекс доступным. Если сценарийраспознал введенный индекс, он присваивает имя файла формата WML этого индекса переменной $FileName. Позднее сценарий откроет и выведет соответствующий файл (который может быть и файлом Unknown.wml).





Подробнее о сценариях языка Perl,используемых в приложении

Как и приложение формата WML, приложение в формате HDML использует трисценария языка Perl для обработки выбранных пользователем почтового индекса,города или штата. Исходный код каждого из этих сценариев практически идентичен описанным ранее сценариям, поэтому здесь приведены только файлыформата HDML, которые сценарии загружают и отображают.

Когда пользователь определил почтовый индекс, приложение подключает сценарий ZipWeatherHDML.pl. Основываясь на выборе пользователя, сценарий загрузит одну из дек, например, 89101.hdml, исходный код которой приведен ниже:

&ltHDML Version=3.0 Markable=True TTL=0&gt

&ltChoice Name=Menu Method=Number&gt

&ltAction Type=Accept Label=Wx&gt

&ltAction Type=Soft1 Task=GO Dest=../Weather/Weather.hdml Label=Menu Vars=StateName=&CityName=&ZipCode=&gt

&ltCenter&gtLas Vegas, NV&ltBR&gt

&ltCE Task=GO Dest=#Current&gtCurrent Conditions &ltCE Task=GO Dest=#Today&gtToday &ltCE Task=GO Dest=#Tomorrow&gtTomorrow

&lt/Choice&gt

&ltDisplay Name=Current&gt

&ltAction Type=Accept Task=GO Dest=#Menu&gt

&ltCenter&gtLas Vegas, NV&ltBR&gt

&ltLine&gt8:50 pm PST &ltLine&gtNov 25, 1999 &ltLine&gtTemp: 47 F &ltLine&gtPress: 30.15 &ltLine&gtHumid: 25% &ltLine&gtWind: W at 10 mph &ltLine&gtSky: Clear

&lt/Display&gt

&ltDisplay Name=Today&gt

&ltAction Type=Accept Task=GO Dest=#Menu&gt

&ltCenter&gtLas Vegas, NV&ltBR&gt &ltLine&gtNov 25, 1999 &ltLine&gtHi/Low: 70/40 F &ltWrap&gtMostly sunny. Light winds. Increasing clouds at night.

&lt/Display&gt

&ltDisplay Name=Tomorrow&gt

&ltAction Type=Accept Task=GO Dest=#Menu&gt

&ltCenter&gtLas Vegas, NV&ltBR&gt &ltLine&gtNov 26, 1999 &ltLine&gtHi/Low: 65/40 F &ltWrap&gtPartly cloudy.




Браузер, поддерживающий протокол WAP, в свою очередь, перехватывает вывод, трактуя его каккарту формата WML. ^ v i, t ;я;

В файле формата WML для определенного индекса исходный код предлагаетпользователю выбрать, что он желает узнать: текущую погоду, погоду на сегодняшний день или прогноз на завтра. После этого, основываясь на выборе пользователя, отображается информация о погоде.

В нашем случае карта содержит всю информацию о погоде. В реальном приложении вам необходимо будет использовать базу данных для хранения информации о погоде, исходя из содержимого которой будут создаваться в процессе работы приложения соответствующие карты, содержащие необходимую информацию.

Сценарий языка Perl CityWeatherWML.pl анализирует название города, получаемоеим из приложения как параметр, и затем, основываясь на введенном названии,открывает и выводит файл, предлагающий пользователю выбрать информацию отекущей погоде, погоде на сегодняшний день или прогноз на завтра. После этогофайл выводит на дисплей телефона соответствующую погодную информацию.Сценарий CityWeatherWML.pl имеет следующий исходный код:

#!/usr/bin/perl

print "Content-type: text/vnd.wap.wml\n\n";

$Buffer = $ENV{'QUERY_STRING'}; $Buffer =~ s/%20/ /g;

if ($Buffer eq "Las Vegas") { $FileName = "../Weather/LasVegas.wml"; } elsif ($Buffer eq "Reno") { $FileName = "../Weather/89501.wml"; } elsif ($Buffer eq "Albuquerque") { $FileName = "../Weather/87101.wml"; } else { $FileName = "../Weather/Unknown.wml"; }

open (WeatherInfo, $FileName);

while (&ltWeatherInfo&gt) { print; }

close (WeatherInfo);

Как вы видите, в сценарии используется последовательность конструкций if-else для определения введенного пользователем названия города. Если сценарийобнаруживает поддерживаемое название города, он присваивает его переменной$FileName, которую использует позднее для открытия и вывода содержимогофайла. Если введенное название не поддерживается сценарием, то этой переменной присваивается имя файла Unknown.wml с целью вывода на дисплей пользователя сообщения об ошибке.


Наше приложение поддерживает всего два города: Лас-Вегас, штат Невада (Las Vegas, Nevada) и Лас-Вегас, штат Нью-Мехико (LasVegas, New Mexico). Поскольку названия городов одинаковы, приложение должно предложить пользователю выбрать один из городов. Файл LasVegas.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="prev"&gt &ltgo href="../Weather/Weather.wml#GetCity" /&gt &lt/do&gt

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

Pick City&ltbr/&gt

&ltselect&gt

&ltoption onpick="../Weather/87701.wml" &gtLas Vegas, NM&lt/option&gt &ltoption onpick="../Weather/89101.wml" &gtLas Vegas, NV&lt/option&gt

&lt/select&gt

&lt/p&gt

&lt/card&gt

&lt/wml&gt

Для определения выбранного пользователем города в деке используется элемент<seleot>. После того как пользователь произведет выбор, загружается соответствующая городу дека формата WML (на самом деле дека, соответствующая почтовому индексу города).

Как вы понимаете, сценарий языка Perl StateWeatherWML.pl работаетаналогичным образом, используя переданный параметр для определениявыбранного пользователем штата. После этого происходит вывод необходимойинформации на дисплей сотового телефона.



&lt/Display&gt

&lt/HDML&gt

Дека использует элемент <Choice> для определения, что желает увидеть пользователь: текущую погоду, прогноз на сегодня, прогноз на завтра. Далее, принимая вовнимание решение пользователя, управление передается одному из элементов<Display> для отображения выбранной информации. В деке используется несколько элементов <Action> для предоставления пользователю возможности вернуться назад в предыдущее меню или повторно запустить приложение в целом.

Когда пользователь определяет город (помните, что наше приложение поддерживает только четыре города), приложение подключает сценарийCityWeatherHDML.pl. Если пользователь выбирает город Las Vegas, приложениезагрузит деку LasVegas.hdml, которая имеет следующий исходный код:

&ltHDML Version=3.0 Markable=True TTL=0&gt

&ltChoice Method=Number&gt

&ltAction Type=Soft1 Task=GO Dest=../Weather/Weather.hdml#GetCity Label=Back Vars=CityName=&gt

&ltCenter&gtPick City&ltBR&gt

&ltCE Task=GO Dest=../Weather /87701.hdml&gtLas Vegas, NM &ltCE Task=GO Dest=../Weather /89101.hdml&gtLas Vegas, NV

&lt/Choice&gt

&lt/HDML&gt

Приложение использует элемент <Choice> для предоставления пользователю возможности выбрать, погоду в каком из городов с названием Las Vegas он желает узнать. После выбора пользователем города, приложение загружает соответствующую деку формата HDML. которая и отображает информацию о погоде. В самомначале деки используется элемент <Action> для предоставления пользователювозможности вернуться к карте #GetCity, находящейся внутри основной деки.

Наконец, если пользователь выбрал штат, приложение подключает сценарийStateWeatherHDML.pl, который использует последовательность конструкций if-else для определения запрашиваемого пользователем штата. После этого приложение загружает деку, предлагающую выбрать тип прогноза. Далее происходитотображение на дисплее сотового телефона выбранной информации.


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