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






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



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


Когда пользователь запускает приложение StockQuote, дека StockQuote.wml запрашивает у пользователя ввода символа акции. Далее, основываясь на выборепользователя, подключается сценарий языка Perl, находящийся в файлеStockQuoteWML.pl. После этого сценарий определяет символ, введенный пользователем, и отображает деку формата WML, соответствующую выбранной акции.Дека StockQuote.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="Quote" title="Stock Quotes"> <onevent type="onenterforward"> <refresh> <setvar name="Symbol" value="" /> </refresh> </onevent> <onevent type="onenterbackward"> <refresh> <setvar name="Symbol" value="" /> </refresh> </onevent> <do type="accept"> <go href="../waplibcgi/StockQuoteWML.pl?$(Symbol)" /> </do> <p align="center"> Stock Quotes<br/> </p> <p align="left" mode="nowrap"> Symbol:<br/> (* for all)<br/> <input name="Symbol" maxlength="5" title="Symbol" type="text" format="*X" /> </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 предназначено для телефона и не может быть измененокаким-либо промежуточным агентом. <ой \
Далее, за первыми элементами в деке определяется единственная карта, котораяв нашем случае называется Quote. Как вкратце отмечалось выше, основная задачадеки StockQuote.wml - это приглашение пользователю на ввод символа акции, азатем вызов сценария языка Perl для отображения информации о выбранной акции.
Для отслеживания имени символа приложение использует переменную Symbol.Обратите внимание на два элемента в исходном коде недалеко от начала деки. Выувидите два элемента <OnEvent>, которые очищают значение переменной Symbol(символ акции), перед тем как пользователь введет новый символ акции.
Элементы обработки событий <OnEvent> удаляют любое существующее значениепеременной Symbol. Обработка этих событий выполняется перед тем, как пользователем будет введена какая-либо информация. Пакет для разработки про
граммного обеспечения (SDK) запоминает значения переменных при каждомпоследующем запуске программы. В первом элементе <OnEvent> с использованием выражения type="OnEnterForward" удаляется значение переменной, когдапрограмма запускается. Второе выражение type="oneenterbackward" свидетельствует об удалении значения переменной, если пользователь нажал кнопку Back(Назад). Элемент <refresh> обновляет переменные и вид экрана, если какая-либо из переменных отображается в данный момент.
Для передачи введенной пользователем информации в переменную, приложениеиспользует элемент <input>: <input name="Symbol" maxlength="5" title="Symbol" type="text" format="*X" />
Элемент <input> определяет имя переменной, заголовок, который браузер будетотображать на дисплее телефона для этой переменной, максимальное число символов в переменной (в нашем случае 5), тип данных переменной (text) и форматпеременной. Формат *х позволяет переменной иметь длину не более maxlenthсимволов, цифр или букв верхнего регистра. \
Далее, если вы обратите внимание на экран приложения, показанный на Рис. 7.1,приложение выводит заголовок StockQuotes и приглашение для ввода символа.Здесь можно ввести звездочку (*) в ответ на приглашение (* for all - * для всех). Вэтом случае приложение отобразит меню символов всех акций из своей базыданных. Для отображения этих текстовых сообщений приложение используеттег абзаца <р> с соответствующим выравниванием и тег <br> для перехода наследующую строку. После того как желаемый символ акции будет введен пользователем, приложение подключает сценарий языка Perl StockQuoteWML.pl, описанный ниже.









Содержание    Назад    Вперед