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

         

Приглашение пользователю на выбор типа приложений



Рисунок 24.1. Приглашение пользователю на выбор типа приложений




Рассмотрение Both.hdml



Рассмотрение Both.hdml

Если браузер пользователя поддерживает и WML, и HDML (сценарию известно обэтом, так как обеим переменным, $WAPhdml и $WAPwml, присвоены значения), сценарий index.cgi загружает HDML-страницу Both.hdml, которая отображает меню,позволяющее пользователю выбирать или WML-, или HDML-приложения. HDML-страница Both.hdml реализуется с помощью следующего программного кода:

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

&ltChoice Name=select Method=Alpha&gt

&ltCenter&gtSelect HDML/WML

&ltCE Task=GO Dest=Demos.hdml&gtHDML Demos &ltCE Task=GO Dest=Demos.wml&gtWML Demos

&lt/Choice&gt

&lt/HDML&gt

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



Представленные в данной книге приложения написаны для автономного функционирования и отличаются от варианта, когда приложения запускаются с помощью опций меню. При запуске приложений сwaplib.com вы обнаружите, что после завершения приложений не происходит возврата в основное меню. Чтобы упростить работу с несколькими приложениями, можно маркировать основное меню (и каждое приложение). Данное свойство позволяет использовать функциюзакладок (Bookmark), существующую у вашего телефона, для маркировки основного меню (или любого из приложений) с тем, чтобы можно было легко вернуться в основное меню, воспользовавшись менюзакладок телефона.





Рассмотрение Demos.hdml



Рассмотрение Demos.hdml

Если браузер пользователя поддерживает только HDML (сценарию известно обэтом, так как переменной $WAPhdml присвоено значение, а переменной $WAPwmlзначение не присвоено), сценарий index.cgi будет загружать HDML-страницу



Demos.hdml, которая отображает меню приложений, написанных на HDML. HDML-страница Demos.hdml реализуется с помощью следующего программного кода:

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

&ltChoice Name=select Method=Alpha&gt

&ltCenter&gtSelect Demo (HDML)

&ltCE Task=GO Dest=WorldTime/WorldTime.hdml&gtWorld Time &ltCE Task=GO Dest=SkiConditions/SkiConditions.hdml&gtSki Conditions &ltCE Task=GO Dest=MovieGuide/MovieGuide.hdml&gtMovie Guide &ltCE Task=GO Dest=CurrencyConvert/CurrencyConvert.hdml&gtCurrency Converter &ltCE Task=GO Dest=SmartHouse/SmartHouse.hdml&gtSmart House &ltCE Task=GO Dest=StockQuote/StockQuote.hdml&gtStock Quotes &ltCE Task=GO Dest=PhoneBook/PhoneBook.hdml&gtPhone Book &ltCE Task=GO Dest=WapPage/WapPage.hdml&gtWap Page &ltCE Task=GO Dest=WapMail/WapMail.hdml&gtWAP Mail &ltCE Task=GO Dest=FlightSchedule/FlightSchedule.hdml&gtFlight Schedule &ltCE Task=GO Dest=PackageTracker/PTracker.hdml&gtPackage Tracker &ltCE Task=GO Dest=MortgageCalc/MortgageCalc.hdml&gtMortgage Calculator &ltCE Task=GO Dest=Weather/Weather.hdml&gtWeather Info &ltCE Task=GO Dest=CatalogOrder/CatalogItem.hdml&gtCatalog Order &ltCE Task=GO Dest=RestaurantCall/RestaurantCall.hdml&gtRestaurant-Call &ltCE Task=GO Dest=RestaurantRes/RestaurantRes.hdml&gtRestaurant-Res &ltCE Task=GO Dest=HotelInfo/HotelInfo.hdml&gtHotel Info &ltCE Task=GO Dest=YellowPages/YellowPages.hdml&gtYellow Pages &ltCE Task=GO Dest=RealEstate/RealEstate.hdml&gtReal Estate Listings

&lt/Choice&gt

&lt/HDML&gt

В соответствии с тем же форматом, который используют и другие HDML-приложения данной книги, первый элемент сообщает браузеру (или другим программистам) информацию о версии спецификации HDML, поддерживаемой приложением. Параметр Markable=True определяет, что браузер может устанавливать на HDML-странице закладку, а параметр тть=0 предписывает браузеру не выполнять кэширование HDML-страницы. Для отображения и обработки опций меню, выбранных пользователем, в программном коде приложения используетсяэлемент <Choice>.



Рассмотрение приложения Demos.wml



Рассмотрение приложения Demos.wml

Если браузер пользователя поддерживает только WML (сценарию известно обэтом, так как переменной $WAPwml присвоено значение, а переменной $WAPhdmlзначение не присвоено), сценарий index.cgi будет загружать WML-страницуDemos.wml, которая отображает меню приложений, написанных на WML. WML-страница Demos.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="select" title="Demos"&gt

&ltp align="center" mode="wrap"&gt Select Demo (WML) &lt/p&gt

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

&ltselect&gt &ltoption onpick="WorldTime/WorldTime.wml"&gtWorld Time&lt/option&gt &ltoption onpick="SkiConditions/SkiConditions.wml"&gtSki Conditions&lt /option&gt &ltoption onpick="MovieGuide/MovieGuide.wml"&gtMovie Guide&lt/option&gt &ltoption onpick="CurrencyScript/CurrencyScript.wml"&gtCurrency Script&lt/option&gt &ltoption onpick="SmartHouseScript/SmartHouseScript.wml"&gtSmart House Script&lt/option&gt &ltoption onpick="StockQuote/StockQuote.wml"&gtStock Quotes&lt/option&gt &ltoption onpick="PhoneBook/PhoneBook.wml"&gtPhone Book&lt/option&gt &ltoption onpick="WapPage/WapPage.wml"&gtWap Page&lt/option&gt &ltoption onpick="WapMail/WapMail.wml"&gtWAP Mail&lt/option&gt &ltoption onpick="FlightSchedule/FlightSchedule.wml"&gtFlight Schedule&lt/option&gt &ltoption onpick="PackageTracker/PTracker.wml"&gtPackage Tracker&lt/option&gt &ltoption onpick="MortgageCalc/MortgageCalc.wml"&gtMortgage Calculator&lt/option&gt &ltoption onpick="Weather/Weather.wml"&gtWeather Info&lt/option&gt &ltoption onpick="CatalogOrder/CatalogItem.wml"&gtCatalog Order&lt/option&gt &ltoption onpick="RestaurantCall/RestaurantCall.wml"&gtRestaurant- Call&lt/option&gt &ltoption onpick="RestaurantRes/RestaurantRes.wml"&gtRestaurant- Res&lt/option&gt &ltoption onpick="HotelInfo/HotelInfo.wml"&gtHotel Info&lt/option&gt &ltoption onpick="YellowPages/YellowPages.wml"&gtYellow Pages&lt/option&gt &ltoption onpick="RealEstate/RealEstate.wml"&gtReal Estate Listings&lt/ option&gt &ltoption onpick="SmartHouse/SmartHouse.wml"&gtSmart House&lt/option&gt &ltoption onpick="CurrencyConvert/CurrencyConvert.wml"&gtCurrency Converter&lt/option&gt &ltoption onpick="MortgageScript/MortgageScript.wml"&gtMortgage Script&lt/option&gt &ltoption onpick="SlotMachine/SlotMachine.wml"&gtSlot Machine&lt/option&gt &lt/select&gt




&lt/p&gt

&lt/card&gt

&lt/wml&gt

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

Для отображения и обработки пунктов меню в программном коде используетсяэлемент <select>. Когда пользователь выбирает какое-то конкретное приложение, элемент select (Выбор) предписывает браузеру загрузить страницу приложения из соответствующего каталога.


Рассмотрение приложения waplib.com



Рассмотрение приложения waplib.com

При запуске приложения waplib.com выполняется Peri-сценарий index.cgi, чтобы установить тип браузера пользователя. Тип браузера определяется путем анализазначения параметра НТТР_АССЕРТ, получаемого от браузера, запрашивающего сервис. Сценарий index.cgi реализуется с помощью следующего программного кода:

#!/usr/bin/perl

$WAPwml = ""; $WAPhdml = "";

$accept = $ENV{"HTTP_ACCEPT"};

if ($accept =~ /wml/) { $WAPwml = "wml"; }

if ($accept =~ /hdml/) { $WAPhdml = "hdml"; }

if (($WAPwml eq "") && ($WAPhdml eq "")) { print "Location: http://www.waplib.com/WebStart.html\n\n"; }

elsif (($WAPwml eq "wml") && ($WAPhdml eq "")) { print "Location: http://www.waplib.com/Demos.wml\n\n"; }

elsif (($WAPwml eq "") && ($WAPhdml eq "hdml")) { print "Location: http://www.waplib.com/Demos.hdml\n\n"; }

else { print "Location: http://www.waplib.com/Both.hdml\n\n"; }

Приложение использует функцию $ENV для выборки значения переменнойНТТР_АССЕРТ. Затем программа выполняет проверку, чтобы определить, включает лизначение переменной буквы wml. При положительном результате (когда буквы wmlприсутствуют), программный код присваивает значение wml переменной $WAPwml,которую позже он может проверить с помощью конструкции условного перехода if.Далее выполняется аналогичная проверка в отношении букв hdml. Если ни переменной $WAPwml, ни переменной $WAPhdml не присвоены значения, то это означает, чтобраузер не поддерживает ни WML, ни HDML, вследствие этого приложение запускаетHTML-файл WebStarthtml, отображающий сообщение о скором выходе книги «WAP вдействии. Доступ к Интернет-сайтам через сотовый телефон».

Заметьте, что сценарий запускает WML-, HDML- или HTML-файлы просто путем печати слова Location (Адрес), за которым следует требуемый URL. Когда браузервстречает URL в таком формате, он совершает ветвление, переходя на соответствующий адрес.

В реальном приложении ваш HTML-сайт, вероятно, будет выполнять обработкуданных, связанную или не связанную с WML- и HDML-сайтами. HTML-файлWebStart.html содержит следующий программный код:

&lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt

&lthtml&gt &lthead&gt &lttitle&gtWAPLIB&lt/title&gt &lt/head&gt

&ltbody&gt &ltdiv align="center"&gt&lth1&gtWireless Applications Programmer's Library&lt/h1&gt&lt/div&gt&ltbr&gt &ltdiv align="center"&gt&lth2&gtComing soon&lt/h2&gt&lt/div&gt

&lt/body&gt &lt/html&gt