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

   продажа мдф | мебельный щит бук купить, kazan. |       

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



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

Когда пользователь запускает приложение FlightSchedule, дека FlightSchedule.wmlотображает список авиакомпаний, из которого пользователь может сделать свойвыбор. После ввода названия авиакомпании, в приложении предлагается ввестиномер рейса и затем подключается сценарий языка Perl (файл FlightSchedule.pl).Дека FlightSchedule.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="GetAirline1"> <onevent type="onenterforward"> <refresh> <setvar name="AirCode" value="" /> <setvar name="FlightNum" value="" /> </refresh> </onevent> <onevent type="onenterbackward"> <refresh> <setvar name="AirCode" value="" /> <setvar name="FlightNum" value="" />

</refresh> </onevent> <do type="accept"> <go href="GetFlightNum.wml" /> </do> <p align="center"> Flight Schedule<br/> </p> <p align="left" mode="nowrap"> Airline: <select name="AirCode"> <option value="SU">Aeroflot</option> <option value="AC">Air Canada</option> <option value="AF">Air France</option> <option value="NZ">Air New Zealand</option> <option value="AS">Alaska Airlines</option> <option value="AQ">Aloha Airlines</option> <option value="HP">America West</option> <option value="AA">American Airlines</option> <option value="TZ">American Trans Air</option> <option onpick="#GetAirline2">...More</option> </select> </p> </card> <card id="GetAirline2"> <onevent type="onenterforward"> <refresh> <setvar name="AirCode" value="" /> <setvar name="FlightNum" value="" /> </refresh> </onevent> <onevent type="onenterbackward"> <refresh> <setvar name="AirCode" value="" /> <setvar name="FlightNum" value="" /> </refresh> </onevent> <do type="accept"> <go href="GetFlightNum.wml" /> </do> <do type="options" label="Back"> <go href="#GetAirline1" /> </do> <p align="center"> Flight Schedule<br/> </p> <p align="left" mode="nowrap"> Airline: <select name="AirCode"> <option value="CO">Continental</option> <option value="DL">Delta Airlines</option> <option value="LH">Lufthansa</option> <option value="JL">Japan Airlines</option> <option value="KL">KLM Royal Dutch</option> <option value="NW">Northwest Airlines</option> <option value="QF">Qantas Airlines</option> <option value="QQ">Reno Air</option> <option value="SR">SwissAir</option> <option onpick="#GetAirline3">...More</option> </select> </p> </card> <card id="GetAirline3"> <onevent type="onenterforward"> <refresh> <setvar name="AirCode" value="" /> <setvar name="FlightNum" value="" /> </refresh> </onevent> <onevent type="onenterbackward"> <refresh> <setvar name="AirCode" value="" /> <setvar name="FlightNum" value="" /> </refresh> </onevent> <do type="accept"> <go href="GetFlightNum.wml" /> </do> <do type="options" label="Back"> <go href="#GetAirline2" /> </do> <p align="center"> Flight Schedule<br/> </p> <p align="left" mode="nowrap"> Airline: <select name="AirCode"> <option value="TW">TWA</option> <option value="UA">United Airlines</option> <option value="US">USAir</option> <option value="VS">Virgin Atlantic</option> </select> </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 предназначено для телефона и не может быть измененокаким-либо промежуточным агентом.
Далее, за элементами заголовка в деке определяется первая карта, которая в нашем случае называется GetAirlinel. Основной задачей этой карты является предоставление пользователю возможности произвести выбор из списка авиакомпаний. Цифра 1 в конце имени этой карты сообщает о том, что она первая изтрех подобных карт. Приложению требуется много подобных карт для обработкивыбора пользователя из-за большого числа авиакомпаний.
Внутри каждой карты GetAirline приложение использует два элемента<onevent>, которые обрабатывают выбор пользователем кнопок <до> или<prev>. В каждом из случаев код обработки этих событий просто переинициализирует переменные AirCode (Код авиакомпании) и FlightNum (Номер рейса),присваивая им значения нуля. После этого в каждой из карт используется элемент <Select> для отображения списка авиакомпаний и для обработки выборапользователя.
После выбора пользователем желаемой авиакомпании приложение загружаетдеку GetFMghtNum.wml, которая предлагает пользователю ввести номер рейса изатем загружает сценарий языка Perl FlightScheduleWML.pl. Исходный код декиGetFlightNurn.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="GetFlightNum"> <do type="accept" label="Find"> <go method="post" href="../waplibcgi/FlightScheduleWML.pl"> <postfield name="AirCode" value="$(AirCode)&"/> <postfield name="FlightNum" value="$(FlightNum)"/> </go> </do> <p align="left"> Flight Number: <input name="FlightNum" maxlength="5" format="*N" /> </p> </card> </wml>
Как вы видите, в исходном коде используется элемент <input> для предоставления пользователю возможности ввода номера рейса. В этом элементе поле тахlength ограничивает количество вводимых знаков до пяти. Аналогично, формат*N позволяет пользователю вводить только числовые данные. После ввода пользователем желаемой информации о полетах, дека использует элемент <do> дляподключения сценария FlightScheduleWML.pl, который описан ниже.



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