Если вы интересуетесь горными лыжами,
ГЛАВА 3
Подробнее о приложении SkiConditions.wml
Подробнее о горнолыжном регионе
Подробнее о горнолыжном штате
Подробнее о горнолыжном курорте
Подробнее о приложении SkiConditions.hdml
Подробнее о горнолыжном регионе
Подробнее о горнолыжном штате
Подробнее о горнолыжном курорте
Если вы интересуетесь горными лыжами, то информация о последнем состояниидел на горнолыжных курортах страны, наверняка, вам будет интересна. Приложение SkiConditions (Горнолыжные условия) сочетает в себе несколько файловформата WML (или HDML) для отображения состояния снежного покрова па различных горнолыжных курортах. Когда вы запускаете приложение в первый раз,ваш сотовый телефон отображает список регионов, как показано па Рис. 3.1, который вы можете просмотреть, используя клавиши «вверх» и «вниз» телефона.
После выбора региона приложение отобразит список штатов, принадлежащихэтому региону, как показано на Рис. 3.2. Когда выбор штата произведен, приложение покажет список популярных лыжных курортов внутри штата, как показанона Рис. 3.3. Снова используя клавиши «вверх» и «вниз» телефона, вы производитевыбор курорта и приложение отобразит текущее состояние снежного покрова ввыбранном месте, как показано па Рис. 3.4.
Если вы еще не установили пакет инструментальных средствдля разработки программного обеспечения (SDK) для WAP, например, с сайта www.openwave.com, можно протестировать приложение SkiConditions, используя сотовый телефон, поддерживающий протокол WAP. Для этого с помощью телефона необходимонабрать адрес waplib.com/SkiConditions/SkiConditions.hdml, еслибраузер телефона поддерживает язык HDML. Если браузер поддерживает язык WML, то надо ввести адресwaplib.com/SkiConditions/SkiConditions.wml.
Подробнее о горнолыжном курорте
Подробнее о горнолыжном курорте
Далее, когда пользователь производит выбор горнолыжного курорта, исходныйкод загружает деку определенного курорта. К примеру, если пользователь выбралопцию Telluride, код загружает деку SkiTelluride.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="Telluride">
<do type="accept" label="Next"> <go href="SkiVail.wml"/> </do>
<do type="options" label="Areas"> <go href="SkiColorado.wml" /> </do>
<p align="center">
Ski Conditions<br/> Telluride
</p>
<p align="left" mode="nowrap">
Snowfall in 24 hrs: None<br/> Snow depths: 32-36 in.<br/> # Lifts: 12 of 12<br/> # Runs: 63<br/> Snow Surface: Machine Groomed / Packed Powder
</p>
</card>
</wml>
Здесь дека определяет единственную карту, которая в нашем случае называетсяTelluride. Далее, в исходном коде определяется кнопка Next, по нажатию которойбраузер загружает карту следующего курорта, и кнопка Areas, по нажатию которой браузер перезагружает список горнолыжных курортов Colorado.
Наконец, файл использует элемент <р> для предоставления пользователю информации о снежном покрове на соответствующем горнолыжном курорте.
Подробнее о горнолыжном курорте
Подробнее о горнолыжном курорте
Далее, когда пользователь производит выбор горнолыжного курорта, исходныйкод дает браузеру указание загрузить деку определенного курорта. К примеру,если пользователь выбрал опцию Telluride, код загружает деку SkiTelluride.hdml.Приведем ее исходный код:
<HDML Version=3.0 Markable=True TTL=0>
<Display Name=Telluride>
<Action Type=Accept Label=Next Task=GO Dest=SkiVail.hdml> <Action Type=Soft1 Label=Areas Task=GO Dest=SkiColorado.hdml>
<Center>Ski Conditions<br> <Center>Telluride
<Line>Snowfall in 24 hrs: None<br> Snow depths: 32-36 in.<br> # Lifts: 12 of 12<br> # Runs: 63<br> Snow Surface: Machine Groomed / Packed Powder
</Display>
</HDML>
Исходный код начинается с определения действий, которые выполняет браузер,если пользователь выберет опцию Next (Следующий) или Areas (Выбор курорта),которые появляются на дисплее его телефона. Далее, приложение отображаетинформацию о снежном покрове на выбранном горнолыжном курорте.
Подробнее о горнолыжном регионе
Подробнее о горнолыжном регионе
Когда пользователь выбирает горнолыжный регион внутри декиSkiConditions.wml, загружается вторая дека, дека выбора штата в этом регионе. Кпримеру, когда выбирается опция Ski Rockies, исходный код загружает декуSkiRokies.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="GetState">
<do type="accept" label="State"> <noop /> </do>
<do type="options" label="Back"> <go href="SkiConditions.wml" /> </do>
<p align="center">
Ski Conditions
</p>
<p align="left" mode="nowrap">
Select State
<select>
<option onpick="SkiAlberta.wml">Alberta</option> <option onpick="SkiMontana.wml">Montana</option> <option onpick="SkiWyoming.wml">Wyoming</option> <option onpick="SkiIdaho.wml">Idaho</option> <option onpick="SkiUtah.wml">Utah</option> <option onpick="SkiColorado.wml">Colorado</option> <option onpick="SkiArizona.wml">Arizona</option> <option onpick="SkiNewMexico.wml">New Mexico</option>
</select>
</p>
</card>
</wml>
Как вы можете видеть, файл определяет единственную карту, которая в нашемслучае называется GetState. Первый элемент <do> предписывает браузеру не производить действия (<nоор/>) с опцией accept и изменить стандартную надписьОК на State (Штат) на кнопке подтверждения (accept), которая появляется на сотовом телефоне.
Далее исходный код сообщает браузеру, что надо перезагрузить декуSkiConditions.wml, если пользователь выберет опцию Back (Назад), которая появляется на его телефоне. Если, например, пользователь выбрал неправильныйрегион, он может быстро возвратится к списку регионов выбором кнопки Back(Назад).
Наконец, файл использует элемент <select> для предоставления пользователюсписка штатов, имеющих горнолыжные курорты. Далее, как вы можете видеть,приложение дает указание браузеру загрузить деку определения соответствующего штата.
Подробнее о горнолыжном регионе
Подробнее о горнолыжном регионе
Когда пользователь выбирает регион из приложения SkiConditions.hdml, исходный код дает указание браузеру загрузить деку определенного региона. К примеру, когда выбрана опция Rockies, приложение загрузит деку SkiRockies.hdml, исходный код которой приведен ниже:
<HDML Version=3.0 Markable=True TTL=0>
<Choice Name=GetState>
<Action Type=Accept Label=State> <Action Type=Soft1 Label=Back Task=GO Dest=SkiConditions.hdml>
<Center>Ski Conditions <Line>Select State
<CE Task=GO Dest=SkiAlberta.hdml>Alberta <CE Task=GO Dest=SkiMontana.hdml>Montana <CE Task=GO Dest=SkiWyoming.hdml>Wyoming <CE Task=GO Dest=SkiIdaho.hdml>Idaho <CE Task=GO Dest=SkiUtah.hdml>Utah <CE Task=GO Dest=SkiColorado.hdml>Colorado <CE Task=GO Dest=SkiArizona.hdml>Arizona <CE Task=GO Dest=SkiNewMexico.hdml>New Mexico
</Choice>
</HDML>
Как вы заметили, исходный код использует в работе элемент <Choice>. Внутри<Choice> код сперва указывает браузеру на необходимость перезагрузки файлаSkiConditions.hdml, в случае, если пользователь выбрал кнопку Back на дисплеесотового телефона. Далее, код использует элемент <СЕ> для определения спискаштатов, который появляется на дисплее телефона, и для загрузки браузером соответствующей деки при выборе пользователем определенного штата.
Подробнее о горнолыжном штате
Подробнее о горнолыжном штате
Итак, когда пользователь производит выбор горнолыжного штата, исходный кодзагружает деку выбора курортов в этом штате. К примеру, если пользователь выбрал опцию Colorado, код загружает деку SkiColorado.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="GetArea">
<do type="accept" label="Area"> <noop /> </do>
<do type="options" label="State"> <go href="SkiRockies.wml" /> </do>
<p align="center">
Ski Conditions
</p>
<p align="left" mode="nowrap">
Select Area
<select>
<option onpick="SkiAspen.wml">Aspen</option> <option onpick="SkiBeaver.wml">Beaver Creek</option> <option onpick="SkiBreckenridge.wml">Breckenridge</option> <option onpick="SkiButtermilk.wml">Buttermilk</option> <option onpick="SkiCopper.wml">Copper Mountain</option> <option onpick="SkiCrested.wml">Crested Butte</option> <option onpick="SkiKeystone.wml">Keystone</option> <option onpick="SkiLoveland.wml">Loveland</option> <option onpick="SkiPurgatory.wml">Purgatory</option> <option onpick="SkiSnowmass.wml">Snowmass</option> <option onpick="SkiSteamboat.wml">Steamboat</option> <option onpick="SkiTelluride.wml">Telluride</option> <option onpick="SkiVail.wml">Vail</option> <option onpick="SkiWinter.wml">Winter Park</option>
</select>
</p>
</card>
</wml>
Как вы можете видеть, файл определяет единственную карту, которая в нашемслучае называется GetArea. Первый элемент <do> предписывает браузеру не производить действия (<nоор/>) с опцией accept и изменить стандартную надписьОК на Area (Область) на кнопке подтверждения (accept), которая появляется насотовом телефоне.
Далее, исходный код сообщает браузеру, что надо перезагрузить декуSkiRokies.wml, если пользователь выберет опцию State (Штат), которая появляется на его телефоне. Если, например, пользователь выбрал неправильный штат,он может быстро возвратится к списку штатов выбором кнопки State.
Наконец, в деке используется оператор <select> для предоставления пользователю списка горнолыжных курортов. Далее, как вы можете видеть, приложениедает указание браузеру загрузить деку определения соответствующего курорта.
Подробнее о горнолыжном штате
Подробнее о горнолыжном штате
Когда пользователь производит выбор горнолыжного штата, исходный код даетуказание браузеру загрузить деку определенного штата. К примеру, если пользователь выбрал опцию Colorado, приложение загружает деку SkiColorado.hdml, содержимое которой приведено ниже:
<HDML Version=3.0 Markable=True TTL=0>
<Choice Name=GetArea Method=Alpha>
<Action Type=Accept Label=Area> <Action Type=Soft1 Label=State Task=GO Dest=SkiRockies.hdml>
<Center>Ski Conditions <Line>Select Area
<CE Task=GO Dest=SkiAspen.hdml>Aspen <CE Task=GO Dest=SkiBeaver.hdml>Beaver Creek <CE Task=GO Dest=SkiBreckenridge.hdml>Breckenridge <CE Task=GO Dest=SkiButtermilk.hdml>Buttermilk <CE Task=GO Dest=SkiCopper.hdml>Copper Mountain <CE Task=GO Dest=SkiCrested.hdml>Crested Butte <CE Task=GO Dest=SkiKeystone.hdml>Keystone <CE Task=GO Dest=SkiLoveland.hdml>Loveland <CE Task=GO Dest=SkiPurgatory.hdml>Purgatory <CE Task=GO Dest=SkiSnowmass.hdml>Snowmass <CE Task=GO Dest=SkiSteamboat.hdml>Steamboat <CE Task=GO Dest=SkiTelluride.hdml>Telluride <CE Task=GO Dest=SkiVail.hdml>Vail <CE Task=GO Dest=SkiWinter.hdml>Winter Park
</Choice>
</HDML>
Исходный код использует в работе элемент <Choice>. Внутри <Choice> используется элемент <СЕ> для определения списка курортов, который появляется надисплее телефона, и для загрузки браузером соответствующей деки при выборепользователем определенного курорта.
Подробнее о приложении SkiConditions.hdml
Подробнее о приложении SkiConditions.hdml
Как и приложение SkiConditions.wml, файл SkiConditions.hdml позволяет пользователю получить информацию о состоянии снежного покрова на горнолыжныхкурортах. Это приложение также использует несколько дек для отображения информации о регионах, штатах и куротах. Файл SkiConditions.hdml имеет следующий исходный код:
<HDML Version=3.0 Markable=True TTL=0>
<Choice Name=GetRegion>
<Center>Ski Conditions <Line>Select Region
<CE Task=GO Dest=SkiWest.hdml>West <CE Task=GO Dest=SkiRockies.hdml>Rockies <CE Task=GO Dest=SkiMidwest.hdml>Midwest <CE Task=GO Dest=SkiMidAtlantic.hdml>Mid-Atlantic <CE Task=GO Dest=SkiEast.hdml>East
</Choice>
</HDML>
Первый элемент шгутри деки сообщает браузеру (или другим программистам) отом, какая версия языка HDML используется приложением. Далее, выражениеMarkable=True сообщает браузеру, что он может установить закладку в исходнойдеке, a TTL=0 свидетельствует о невозможности кэширования.
Для отображения списка регионов, из которого необходимо выбрать желаемый,приложение использует элемент <Choice>. Внутри <Choice> приложение даетбраузеру указания загружать тот или иной файл определения региона.
Подробнее о приложении SkiConditions.wml
Подробнее о приложении SkiConditions.wml
Когда пользователь запускает приложение SkiConditions, дека SkiConditions.wmlсперва отображает названия различных регионов, знаменитых своими горнолыжными курортами. Затем, основываясь на выборе пользователя, дека загружает вторую деку определения региона. Например, если пользователь выбираетрегион Rockies, приложение загружает деку SkiRockies.wml. Приведем исходныйкод деки SkiConditions.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="GetRegion">
<p align="center">
Ski Conditions
</p>
<p align="left" mode="nowrap">
Select Region
<select>
<option onpick="SkiWest.wml">West</option> <option onpick="SkiRockies.wml">Rockies</option> <option onpick="SkiMidwest.wml">Midwest</option> <option onpick="SkiMidAtlantic.wml">Mid-Atlantic</option> <option onpick="SkiEast.wml">East</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 предназначено для телефона и не может быть измененокаким-либо промежуточным агентом.
Далее, за начальными элементами в исходном коде определяется единственнаякарта, которая в нашем случае называется GetRegion. Внутри GetRegion используется тег <р> для центрирования текста Ski Conditions и выравнивания по левомукраю текста Select Region, так же, как и названий регионов.
Далее, в исходном коде используется элемент <select> для показа списка регионов пользователю. Внутри <select> каждый регион имеет свою собственную опцию, которая определяет для браузера, какой файл загружать далее:
<select>
<option onpick="SkiWest.wml">West</option> <option onpick="SkiRockies.wml">Rockies</option> <option onpick="SkiMidwest.wml">Midwest</option> <option onpick="SkiMidAtlantic.wml">Mid-Atlantic</option> <option onpick="SkiEast.wml">East</option>
</select>
Когда браузер встретит элемент <select>, он отобразит одну строку для каждойопции, определенной внутри этого элемента. Если <select> содержит несколькоразличных опций, пользователь сможет выбрать какую-либо из них посредствомклавиш «вверх» и «вниз» телефона.
Отображение спискагорнолыжных регионов
Рис.. 3.1. Отображение спискагорнолыжных регионов
Отображение списка штатов
Рис.. 3.2. Отображение списка штатов
Отображение спискагорнолыжных курортов
Рис.. 3.3. Отображение спискагорнолыжных курортов
Отображение состоянияснежного покрова на курорте
Рис.. 3.4. Отображение состоянияснежного покрова на курорте