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

         

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



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

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

&ltonevent type="onenterforward"&gt

&ltrefresh&gt &ltsetvar name="SendTo" value="" /&gt &ltsetvar name="MsgSubject" 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="MsgSubject" 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 Mail&ltbr/&gt

&lt/p&gt

&ltp align="left"&gt

Reply To: &ltinput name="ReplyTo" type="text" format="*m" /&gt

&lt/p&gt

&ltp align="center"&gt

WAP Mail&ltbr/&gt

&lt/p&gt

&ltp align="left"&gt

Send To: &ltinput name="SendTo" type="text" format="*m" /&gt




&lt/p&gt

&ltp align="center"&gt

WAP Mail&ltbr/&gt

&lt/p&gt

&ltp align="left"&gt

Subject: &ltinput name="MsgSubject" type="text" format="*M" /&gt

&lt/p&gt

&ltp align="center"&gt

WAP Mail&ltbr/&gt

&lt/p&gt

&ltp align="left"&gt

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

&lt/p&gt

&lt/card&gt

&ltcard id="Confirm"&gt

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

&ltp align="center"&gt

WAP Mail

&lt/p&gt

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

Reply-To: $(ReplyTo) &ltbr/&gtTo: $(SendTo) &ltbr/&gtSubject: $(MsgSubject) &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, MsgSubject, MsgText. За информацией заголовка деки следуют два элемента <onevent> для очистки значений переменныхSendTo, MsgSubject, MsgText в случае, если пользователь будет двигаться впередили назад по приложению, используя команды <до> и <prev>. Приложение считает адрес ReplyTo неменяющимся и поэтому не производит очистку соответствующей переменной каждый раз.

Как вы уже поняли по Главе 9, событие Onenterforward происходит, когдапользователь перемещается к карте деки с помощью команды <до>.


Аналогично,когда пользователь использует команду <prev>, происходит событие

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

Далее, в исходном коде деки следуют элементы <input> для определения формата четырех описанных выше переменных. Элементы <input> внутри деки записаны в том же порядке, в котором они появляются на дисплее. Заметьте также,что элементы <input> определяют формат для каждой из переменных. Формат*М позволяет вводить алфавитно-цифровые знаки смешанного регистра, числаили имена, начинающиеся, по умолчанию, со знака в верхнем регистре. Вообще,оба форматы *М и *т позволяют вводить имена, числа и алфавитно-цифровыезнаки, причем М - по умолчанию первый символ верхнего регистра, m - по умолчанию первый символ нижнего регистра.

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


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