Мониторинг обменных курсов валют
18c0693f

Рассмотрение приложения Restaurant.hdml



Рассмотрение приложения Restaurant.hdml

Как и приложение, основанное на WML, Restaurant.hdml позволяет отображатьадрес и номер телефона, используя для этого портативное устройство пользователя. Кроме того, при желании, пользователь также может автоматически позвонить в ресторан. Приложение Restauranthdml реализуется с помощью следующего программного кода на HDML:

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

&ltChoice Name=GetRestType Key=RestType&gt

&ltAction Type=Accept Label=Pick Task=GO Method=Post PostData=$RestType Dest=../waplibcgi/RestCallTypeHDML.pl&gt

&ltCenter&gtRestaurants

&ltCE Value="American"&gtAmerican &ltCE Value="Chinese"&gtChinese &ltCE Value="FastFood"&gtFast Food &ltCE Value="HealthFood"&gtHealth Food &ltCE Value="Italian"&gtItalian &ltCE Value="Mexican"&gtMexican &ltCE Value="Seafood"&gtSeafood

&lt/Choice&gt

&lt/HDML&gt

Первый элемент в файле сообщает браузеру (или другим программистам) информацию о версии спецификации HDML, поддерживаемой приложением. Крометого, параметр Markable=True определяет, что браузер может устанавливать наHDML-странице закладку (Bookmark), а параметр TTL=0 предписывает браузеру невыполнять кэширование HDML-страницы. Для предоставления пользователювозможности указывать тип предпочитаемой кухни приложение использует элемент <Choice>. Затем приложение запускает Peri-сценарий RestCallTypeHDML.pl,чтобы отобразить на экране список названий ресторанов, из которых пользователь может сделать свой выбор. Peri-сценарий RestCallTypeHDML.pl реализуется спомощью следующего программного кода: #!/usr/bin/perl

read (STDIN, $RestType, $ENV{'CONTENT_LENGTH'});

if ($RestType eq "American")

{ $Deck = "Content-type: text/x-hdml

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

&ltChoice Name=GetAmerican Key=RestName&gt

&ltAction Type=Accept Label=Pick Task=GO Method=Post PostData=\$RestName Dest=RestCallAmerHDML.pl&gt




&ltAction Type=Soft1 Label=Back Task=GO Dest=../RestaurantCall/RestaurantCall.hdml&gt

&ltCenter&gtRestaurants&ltbr&gt &ltCenter&gtAmerican&ltbr&gt

&ltCE Value=AllStar& gtAll Star Cafe &ltCE Value=MarysDiner&gtMary's Diner &ltCE Value=Timberline&gtTimberline Inn

&lt/Choice&gt

&lt/HDML&gt";

}

elsif ($RestType eq "Chinese")

{ $Deck = "Content-type: text/x-hdml

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

&ltChoice Name=GetChinese Key=RestName&gt

&ltAction Type=Accept Label=Pick Task=GO Method=Post PostData=\$RestName Dest=RestCallChineseHDML.pl&gt

&ltAction Type=Soft1 Label=Back Task=GO Dest=../RestaurantCall/RestaurantCall.hdml&gt

&ltCenter&gtRestaurants&ltbr&gt &ltCenter&gtChinese&ltbr&gt

&ltCE Value=ChinaGarden&gtChina Garden &ltCE Value=GoldenDragon&gtGolden Dragon &ltCE Value=PlumTree&gtPlum Tree Inn

&lt/Choice&gt

&lt/HDML&gt";

}

elsif ($RestType eq "FastFood")

{ $Deck = "Content-type: text/x-hdml

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

&ltChoice Name=GetFastFood Key=RestName&gt

&ltAction Type=Accept Label=Pick Task=GO Method=Post PostData=\$RestName Dest=RestCallFastFoodHDML.pl&gt

&ltAction Type=Soft1 Label=Back Task=GO Dest=../RestaurantCall/RestaurantCall.hdml&gt

&ltCenter&gtRestaurants&ltbr&gt &ltCenter&gtFast Food&ltbr&gt

&ltCE Value=BurgerKing&gtBurger King &ltCE Value=McDonalds&gtMcDonald's &ltCE Value=TopSpot&gtTop Spot

&lt/Choice&gt

&lt/HDML&gt";

}

elsif ($RestType eq "HealthFood")

{ $Deck = "Content-type: text/x-hdml

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

&ltChoice Name=GetHealthFood Key=RestName&gt

&ltAction Type=Accept Label=Pick Task=GO Method=Post PostData=\$RestName Dest=RestCallHealthFoodHDML.pl&gt



&ltAction Type=Soft1 Label=Back Task=GO Dest=../RestaurantCall/RestaurantCall.hdml&gt

&ltCenter&gtRestaurants&ltbr&gt &ltCenter&gtHealth Food&ltbr&gt

&ltCE Value=GeneralNutrition& gtGeneral Nutrition &ltCE Value=HealthExpress&gtHealth Express &ltCE Value=LivingHealthy&gtLiving Healthy

&lt/Choice&gt

&lt/HDML&gt";

}

elsif ($RestType eq "Italian")

{ $Deck = "Content-type: text/x-hdml

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

&ltChoice Name=GetItalian Key=RestName&gt

&ltAction Type=Accept Label=Pick Task=GO Method=Post PostData=\$RestName Dest=RestCallItalianHDML.pl&gt

&ltAction Type=Soft1 Label=Back Task=GO Dest=../RestaurantCall/RestaurantCall.hdml&gt

&ltCenter&gtRestaurants&ltbr&gt &ltCenter&gtItalian&ltbr&gt

&ltCE Value=Marios&gtMario's &ltCE Value=OliveGarden&gtOlive Garden &ltCE Value=PapaMurphys&gtPapa Murphy's

&lt/Choice&gt

&lt/HDML&gt";

}

elsif ($RestType eq "Mexican")

{ $Deck = "Content-type: text/x-hdml

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

&ltChoice Name=GetMexican Key=RestName&gt

&ltAction Type=Accept Label=Pick Task=GO Method=Post PostData=\$RestName Dest=RestCallMexicanHDML.pl&gt

&ltAction Type=Soft1 Label=Back Task=GO Dest=../RestaurantCall/RestaurantCall.hdml&gt

&ltCenter&gtRestaurants&ltbr&gt &ltCenter&gtMexican&ltbr&gt

&ltCE Value=BajaFresh&gtBaja Fresh &ltCE Value=Guadalajara&gtGuadalajara Grill &ltCE Value=LaVilla&gtLa Villa

&lt/Choice&gt

&lt/HDML&gt";

}

elsif ($RestType eq "Seafood")

{ $Deck = "Content-type: text/x-hdml

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

&ltChoice Name=GetSeafood Key=RestName&gt

&ltAction Type=Accept Label=Pick Task=GO Method=Post PostData=\$RestName Dest=RestCallSeafoodHDML.pl&gt



&ltAction Type=Soft1 Label=Back Task=GO Dest=../RestaurantCall/RestaurantCall.hdml&gt

&ltCenter&gtRestaurants&ltbr&gt &ltCenter&gtSeafood&ltbr&gt

&ltCE Value=KPSeafood&gtK & P Seafood &ltCE Value=FishCompany&gtLas Vegas Fish Company &ltCE Value=SevenSeas&gtSeven Seas

&lt/Choice&gt

&lt/HDML&gt";

}

print $Deck;

Сценарий анализирует параметр, после этого присваивает тип ресторана переменной $RestType. Далее программа использует серию ветвлений if-else дляопределения выбранного типа ресторана, в этом месте программного кода сценарий создает HDML-страницу, отображаемую браузером в виде списка соответствующих ресторанов. После выбора пользователем некоторого конкретного ресторана вновь созданная HDML-страница запускает соответствующий типу кухниPeri-сценарий, подобный RestCallSeafoodHDML.pl, приводимому здесь:

#!/usr/bin/perl

read (STDIN, $RestName, $ENV{'CONTENT_LENGTH'});

if ($RestName eq "KPSeafood")

{ $Deck = "Content-type: text/x-hdml

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

&ltDisplay Name=KPSeafood&gt

&ltAction Type=Soft1 Label=Back Task=GO Method=Post PostData=Seafood Dest=RestCallTypeHDML.pl&gt

&ltAction Type=Accept Icon=phone1 Label=Call Task=Call Number=702-555-1212&gt

&ltCenter&gtRestaurants&ltbr&gt &ltCenter&gtSeafood&ltbr&gt &ltLine&gtK & P Seafood&ltbr&gt 111 Main Street&ltbr&gt Las Vegas, NV&ltbr&gt 702-555-1212

&lt/Display&gt

&lt/HDML&gt"; }

elsif ($RestName eq "FishCompany")

{ $Deck = "Content-type: text/x-hdml

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

&ltDisplay Name=FishCompany&gt

&ltAction Type=Soft1 Label=Back Task=GO Method=Post PostData=Seafood Dest=RestCallTypeHDML.pl&gt

&ltAction Type=Accept Icon=phone1 Label=Call Task=Call Number=702-555-1212&gt

&ltCenter&gtRestaurants&ltbr&gt &ltCenter&gtSeafood&ltbr&gt &ltLine&gtLas Vegas Fish Company&ltbr&gt 222 East Sahara&ltbr&gt Las Vegas, NV&ltbr&gt 702-555-1212



&lt/Display&gt

&lt/HDML&gt"; }

elsif ($RestName eq "SevenSeas")

{ $Deck = "Content-type: text/x-hdml

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

&ltDisplay Name=SevenSeas&gt

&ltAction Type=Soft1 Label=Back Task=GO Method=Post PostData=Seafood Dest=RestCallTypeHDML.pl&gt

&ltAction Type=Accept Icon=phone1 Label=Call Task=Call Number=702-555-1212&gt

&ltCenter&gtRestaurants&ltbr&gt &ltCenter&gtSeafood&ltbr&gt &ltLine&gtSeven Seas&ltbr&gt 100 Water Street&ltbr&gt Las Vegas, NV&ltbr&gt 702-555-1212

&lt/Display&gt

&lt/HDML&gt"; }

print $Deck;

Элемент <Action> с параметром Task= Call определяет номер, который будетвызывать браузер, когда пользователь нажимает кнопку ввода (Accept), на которой может быть нанесено слово Call (Вызов) или, если телефон поддерживаетпиктограммы, изображение телефона.





Самый выгодный курс обмена валюты