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

         

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



ГЛАВА 24

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

Как вам известно из данной книги, любое из рассматриваемых здесь приложенийопробывается путем посещения определенного адреса на сайте waplib.com. Чтобы облегчить запуск различных программ, сайт содержит приложение, представляющее каждую программу в виде опции меню. Когда вы выбираете программу, выполняется загрузка WML-страницы соответствующего приложения.Проблема создания приложения waplib.com заключается в том, что посетительсайта может использовать HTML-, WML- или HDML-браузер. В данной главе вы узнаете, как определить тип браузера так, чтобы ваша программа реагировала соответствующим образом. При первоначальном запуске приложение определяеттип браузера, выполняет ветвление программного кода и совершает переход насоответствующий HTML-, WML- или HDML-код. Если браузер пользователя поддерживает WML и HDML, приложение будет отображать приглашение пользователюопределить набор приложений, которые требуется выполнять, как показано наРис. 24.1. После выбора пользователем типа приложений программа waplib.comбудет отображать меню приложений, как показано на Рис. 24.2.



Если вы еще не установили пакет инструментального программного обеспечения (SDK) для разработки WAP-приложений,аналогичный SDK, который вы можете загрузить с Web-caumawww.openwave.com, то проверить работу приложенияwaplib.com можно с помощью сотового телефона с WAP-функциями, набрав в качестве URL waplib.com.






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





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


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


<HDML Version=3.0 Markable=True TTL=0>
<Choice Name=select Method=Alpha>
<Center>Select HDML/WML
<CE Task=GO Dest=Demos.hdml>HDML Demos <CE Task=GO Dest=Demos.wml>WML Demos
</Choice>
</HDML>


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



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





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





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


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


Demos.hdml, которая отображает меню приложений, написанных на HDML. HDML-страница Demos.hdml реализуется с помощью следующего программного кода:
<HDML Version=3.0 Markable=True TTL=0>
<Choice Name=select Method=Alpha>
<Center>Select Demo (HDML)
<CE Task=GO Dest=WorldTime/WorldTime.hdml>World Time <CE Task=GO Dest=SkiConditions/SkiConditions.hdml>Ski Conditions <CE Task=GO Dest=MovieGuide/MovieGuide.hdml>Movie Guide <CE Task=GO Dest=CurrencyConvert/CurrencyConvert.hdml>Currency Converter <CE Task=GO Dest=SmartHouse/SmartHouse.hdml>Smart House <CE Task=GO Dest=StockQuote/StockQuote.hdml>Stock Quotes <CE Task=GO Dest=PhoneBook/PhoneBook.hdml>Phone Book <CE Task=GO Dest=WapPage/WapPage.hdml>Wap Page <CE Task=GO Dest=WapMail/WapMail.hdml>WAP Mail <CE Task=GO Dest=FlightSchedule/FlightSchedule.hdml>Flight Schedule <CE Task=GO Dest=PackageTracker/PTracker.hdml>Package Tracker <CE Task=GO Dest=MortgageCalc/MortgageCalc.hdml>Mortgage Calculator <CE Task=GO Dest=Weather/Weather.hdml>Weather Info <CE Task=GO Dest=CatalogOrder/CatalogItem.hdml>Catalog Order <CE Task=GO Dest=RestaurantCall/RestaurantCall.hdml>Restaurant-Call <CE Task=GO Dest=RestaurantRes/RestaurantRes.hdml>Restaurant-Res <CE Task=GO Dest=HotelInfo/HotelInfo.hdml>Hotel Info <CE Task=GO Dest=YellowPages/YellowPages.hdml>Yellow Pages <CE Task=GO Dest=RealEstate/RealEstate.hdml>Real Estate Listings
</Choice>
</HDML>


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





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





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


Если браузер пользователя поддерживает только WML (сценарию известно обэтом, так как переменной $WAPwml присвоено значение, а переменной $WAPhdmlзначение не присвоено), сценарий index.cgi будет загружать WML-страницуDemos.wml, которая отображает меню приложений, написанных на WML. WML-страница Demos.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="select" title="Demos">
<p align="center" mode="wrap"> Select Demo (WML) </p>
<p align="left" mode="nowrap">
<select> <option onpick="WorldTime/WorldTime.wml">World Time</option> <option onpick="SkiConditions/SkiConditions.wml">Ski Conditions< /option> <option onpick="MovieGuide/MovieGuide.wml">Movie Guide</option> <option onpick="CurrencyScript/CurrencyScript.wml">Currency Script</option> <option onpick="SmartHouseScript/SmartHouseScript.wml">Smart House Script</option> <option onpick="StockQuote/StockQuote.wml">Stock Quotes</option> <option onpick="PhoneBook/PhoneBook.wml">Phone Book</option> <option onpick="WapPage/WapPage.wml">Wap Page</option> <option onpick="WapMail/WapMail.wml">WAP Mail</option> <option onpick="FlightSchedule/FlightSchedule.wml">Flight Schedule</option> <option onpick="PackageTracker/PTracker.wml">Package Tracker</option> <option onpick="MortgageCalc/MortgageCalc.wml">Mortgage Calculator</option> <option onpick="Weather/Weather.wml">Weather Info</option> <option onpick="CatalogOrder/CatalogItem.wml">Catalog Order</option> <option onpick="RestaurantCall/RestaurantCall.wml">Restaurant- Call</option> <option onpick="RestaurantRes/RestaurantRes.wml">Restaurant- Res</option> <option onpick="HotelInfo/HotelInfo.wml">Hotel Info</option> <option onpick="YellowPages/YellowPages.wml">Yellow Pages</option> <option onpick="RealEstate/RealEstate.wml">Real Estate Listings</ option> <option onpick="SmartHouse/SmartHouse.wml">Smart House</option> <option onpick="CurrencyConvert/CurrencyConvert.wml">Currency Converter</option> <option onpick="MortgageScript/MortgageScript.wml">Mortgage Script</option> <option onpick="SlotMachine/SlotMachine.wml">Slot Machine</option> </select>
</p>
</card>
</wml>


В соответствии с форматом любого из 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 содержит следующий программный код: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>WAPLIB</title> </head> <body> <div align="center"><h1>Wireless Applications Programmer's Library</h1></div><br> <div align="center"><h2>Coming soon</h2></div> </body> </html>



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



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





Отображение списка приложений



Рис.. 24.2. Отображение списка приложений