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

         

Подробнее о приложении FlightSchedule.wml



Подробнее о приложении FlightSchedule.wml

Когда пользователь запускает приложение FlightSchedule, дека FlightSchedule.wmlотображает список авиакомпаний, из которого пользователь может сделать свойвыбор. После ввода названия авиакомпании, в приложении предлагается ввестиномер рейса и затем подключается сценарий языка Perl (файл FlightSchedule.pl).Дека FlightSchedule.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="GetAirline1"&gt

&ltonevent type="onenterforward"&gt

&ltrefresh&gt

&ltsetvar name="AirCode" value="" /&gt &ltsetvar name="FlightNum" value="" /&gt

&lt/refresh&gt

&lt/onevent&gt



&ltonevent type="onenterbackward"&gt

&ltrefresh&gt

&ltsetvar name="AirCode" value="" /&gt &ltsetvar name="FlightNum" value="" /&gt

&lt/refresh&gt

&lt/onevent&gt

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

&ltp align="center"&gt

Flight Schedule&ltbr/&gt

&lt/p&gt

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

Airline:

&ltselect name="AirCode"&gt

&ltoption value="SU"&gtAeroflot&lt/option&gt &ltoption value="AC"&gtAir Canada&lt/option&gt &ltoption value="AF"&gtAir France&lt/option&gt &ltoption value="NZ"&gtAir New Zealand&lt/option&gt &ltoption value="AS"&gtAlaska Airlines&lt/option&gt &ltoption value="AQ"&gtAloha Airlines&lt/option&gt &ltoption value="HP"&gtAmerica West&lt/option&gt &ltoption value="AA"&gtAmerican Airlines&lt/option&gt &ltoption value="TZ"&gtAmerican Trans Air&lt/option&gt &ltoption onpick="#GetAirline2"&gt...More&lt/option&gt




&lt/select&gt

&lt/p&gt

&lt/card&gt

&ltcard id="GetAirline2"&gt

&ltonevent type="onenterforward"&gt

&ltrefresh&gt

&ltsetvar name="AirCode" value="" /&gt &ltsetvar name="FlightNum" value="" /&gt

&lt/refresh&gt

&lt/onevent&gt

&ltonevent type="onenterbackward"&gt

&ltrefresh&gt

&ltsetvar name="AirCode" value="" /&gt &ltsetvar name="FlightNum" value="" /&gt

&lt/refresh&gt

&lt/onevent&gt

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

&ltdo type="options" label="Back"&gt &ltgo href="#GetAirline1" /&gt &lt/do&gt

&ltp align="center"&gt

Flight Schedule&ltbr/&gt

&lt/p&gt

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

Airline:

&ltselect name="AirCode"&gt

&ltoption value="CO"&gtContinental&lt/option&gt &ltoption value="DL"&gtDelta Airlines&lt/option&gt &ltoption value="LH"&gtLufthansa&lt/option&gt &ltoption value="JL"&gtJapan Airlines&lt/option&gt &ltoption value="KL"& gtKLM Royal Dutch&lt/option&gt &ltoption value="NW"&gtNorthwest Airlines&lt/option&gt &ltoption value="QF"&gtQantas Airlines&lt/option&gt &ltoption value="QQ"&gtReno Air&lt/option&gt &ltoption value="SR"&gtSwissAir&lt/option&gt &ltoption onpick="#GetAirline3"&gt...More&lt/option&gt

&lt/select&gt

&lt/p&gt

&lt/card&gt

&ltcard id="GetAirline3"&gt

&ltonevent type="onenterforward"&gt



&ltrefresh&gt

&ltsetvar name="AirCode" value="" /&gt &ltsetvar name="FlightNum" value="" /&gt

&lt/refresh&gt

&lt/onevent&gt

&ltonevent type="onenterbackward"&gt

&ltrefresh&gt

&ltsetvar name="AirCode" value="" /&gt &ltsetvar name="FlightNum" value="" /&gt

&lt/refresh&gt

&lt/onevent&gt

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

&ltdo type="options" label="Back"&gt &ltgo href="#GetAirline2" /&gt &lt/do&gt

&ltp align="center"&gt

Flight Schedule&ltbr/&gt

&lt/p&gt

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

Airline:

&ltselect name="AirCode"&gt

&ltoption value="TW"&gtTWA&lt/option&gt &ltoption value="UA"&gtUnited Airlines&lt/option&gt &ltoption value="US"&gtUSAir&lt/option&gt &ltoption value="VS"&gtVirgin Atlantic&lt/option&gt

&lt/select&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 предназначено для телефона и не может быть измененокаким-либо промежуточным агентом.

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

Внутри каждой карты GetAirline приложение использует два элемента<onevent>, которые обрабатывают выбор пользователем кнопок <до> или<prev>. В каждом из случаев код обработки этих событий просто переинициализирует переменные AirCode (Код авиакомпании) и FlightNum (Номер рейса),присваивая им значения нуля.


После этого в каждой из карт используется элемент <Select> для отображения списка авиакомпаний и для обработки выборапользователя.

После выбора пользователем желаемой авиакомпании приложение загружаетдеку GetFMghtNum.wml, которая предлагает пользователю ввести номер рейса изатем загружает сценарий языка Perl FlightScheduleWML.pl. Исходный код декиGetFlightNurn.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="GetFlightNum"&gt

&ltdo type="accept" label="Find"&gt

&ltgo method="post" href="../waplibcgi/FlightScheduleWML.pl"&gt &ltpostfield name="AirCode" value="$(AirCode)&"/&gt &ltpostfield name="FlightNum" value="$(FlightNum)"/&gt &lt/go&gt

&lt/do&gt

&ltp align="left"&gt

Flight Number: &ltinput name="FlightNum" maxlength="5" format="*N" /&gt

&lt/p&gt

&lt/card&gt

&lt/wml&gt

Как вы видите, в исходном коде используется элемент <input> для предоставления пользователю возможности ввода номера рейса. В этом элементе поле тахlength ограничивает количество вводимых знаков до пяти. Аналогично, формат*N позволяет пользователю вводить только числовые данные. После ввода пользователем желаемой информации о полетах, дека использует элемент <do> дляподключения сценария FlightScheduleWML.pl, который описан ниже.


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