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

       

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



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

Когда пользователь запускает приложение WapPage, дека WapPage.wml отображает запросы на ввод номера пользователя для ответа, номера получателя и непосредственно текстового сообщения. После того как пользователь введет эту информацию, приложение подключает сценарий языка Perl WebPageWML.pl, который и выполняет большинство необходимых действий. Дека WapPage.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="WAPPage" title="WAP Page"&gt

&ltonevent type="onenterforward"&gt

&ltrefresh&gt &ltsetvar name="SendTo" value="" /&gt &ltsetvar name="MsgText" value="" /&gt &lt/refresh&gt

&lt/onevent&gt

&ltonevent type="onenterbackward"&gt

&ltrefresh&gt &ltsetvar name="SendTo" value="" /&gt &ltsetvar name="MsgText" value="" /&gt &lt/refresh&gt



&lt/onevent&gt

&ltdo type="accept"&gt &ltgo href="#Confirm" /&gt &lt/do&gt

&ltp align="center"&gt

WAP Page&ltbr/&gt

&lt/p&gt

&ltp align="left"&gt

Reply To: &ltinput name="ReplyTo" type="text" format="NNN-NNN-NNNN" /&gt

&lt/p&gt

&ltp align="center"&gt

WAP Page&ltbr/&gt

&lt/p&gt

&ltp align="left"&gt

Send To: &ltinput name="SendTo" type="text" format="NNN-NNN-NNNN" /&gt

&lt/p&gt

&ltp align="center"&gt




WAP Page&ltbr/&gt

&lt/p&gt

&ltp align="left"&gt

Message: &ltinput name="MsgText" type="text" format="80M" /&gt

&lt/p&gt

&lt/card&gt

&ltcard id="Confirm"&gt

&ltdo type="accept" label="Send"&gt &ltgo method="post" href="../waplibcgi/WapPageWML.pl"&gt &ltpostfield name="ReplyTo" value="$(ReplyTo)&"/&gt &ltpostfield name="SendTo" value="$(SendTo)&"/&gt &ltpostfield name="MsgText" value="$(MsgText)"/&gt &lt/go&gt &lt/do&gt

&ltp align="center"&gt

WAP Page

&lt/p&gt

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

Reply-To: $(ReplyTo) &ltbr/&gtTo: $(SendTo) &ltbr/&gtText: $(MsgText)

&lt/p&gt

&lt/card&gt

&lt/wml&gt

Так же как и во всех деках формата WML, первые два ее элемента сообщают браузеру, какую из версий спецификации WAP поддерживает данное приложение. Внашем случае WML-страница поддерживает версию 1.0 языка XML и версию 1.1описания типа документа (DTD), разработанного ассоциацией WAP Forum.

&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

Далее, за информацией о версиях, каждый WML-файл начинается с тега <wml>. Вконце каждого файла вводят </wml>, что означает окончание исходного кодаприложения. За <wml> следуют теги <head> и </head>, внутри которых находитсяинформация о самом исходном коде, включая метаданные и информацию обуправлении доступом. Многие программисты называют метаданные «данными оданных». Другими словами, в этом случае метаданные, которые считывает и обрабатывает браузер, сообщают ему, как трактовать данные.

&lthead&gt

&ltmeta http-equiv="Cache-Control" content="max-age=0" forua="true"/&gt &lt/head&gt



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

Приложение использует три переменные для отслеживания введенной пользователем информации: ReplyTo, SendTo, MsgText. За первыми строками исходного кода деки используются два элемента <onevent> для очистки значений переменных SendTo и MsgText, в случае, если пользователь будет продвигаться впередили назад в приложении, используя команды <до> и <prev>.

Событие Onenterforward происходит в том случае, когда пользователь переходит к карте с помощью команды <до>. Аналогично, когда используется команда<prev>, происходит событие Onenterbackward. После этого приложение передает сообщение сценарию языка Perl, который использует элемент <до> для возврата в начало и пользователь может послать другое сообщение, если желает. Приложение полагает, что номер в переменной ReplyTo остается прежним, поэтомуи не удаляет его каждый раз, как две другие переменные.

&ltonevent type="onenterforward"&gt

&ltrefresh&gt &ltsetvar name="SendTo" value="" /&gt &ltsetvar name="MsgText" value="" /&gt &lt/refresh&gt



&lt/onevent&gt

&ltonevent type="onenterbackward"&gt

&ltrefresh&gt &ltsetvar name="SendTo" value="" /&gt &ltsetvar name="MsgText" value="" /&gt &lt/refresh&gt

&lt/onevent&gt

Далее, в исходном коде используется элемент <input> для определения формататрех вводимых переменных. Как вы видите, элементы <input> следуют в том жепорядке, в каком они появляются на дисплее телефона. Заметьте также, что элемент <input> определяет формат для каждой из переменных. Формат NNN-NNN-NNNN для переменных SendTo и ReplyTo, к примеру, ограничивает значение каждой переменной числовыми данными в виде телефонного номера. Аналогично,формат 80М для переменной MsgText допускает ввод не более 80 символов.

После того как пользователь введет желаемые данные, приложение обратится ккарте Confirm (Подтверждение), отображающей данные, которые необходимопередать. После того как пользователь нажмет кнопку Send (Послать), дека передаст данные сценарию языка Perl WapPageWML.pl, как показано ниже:

Карта использует элемент <do> для отображения итогового сообщения и кнопкиSend на дисплее сотового телефона. Если пользователь нажимает Send, данныепередаются сценарию языка Perl.


Содержание раздела