WML - язык разметки

Автор статьи: Жарков Алексей
Сайт Автора: tay.ru
E-mail Автора: AZharkov@renins.com
Дата публикации: 27.05.2006


Вызов скрипта


Без возможности производить различные операции с информацией на сервере, WML остался бы просто средством форматированного вывода текста. Добавление такой возможности, напротив, открывает любому WAP-совместимому устройству пути передачи сообщений через Интернет, промышленному использованию на предприятии и электронной коммерции. WAP-совместимое устройство взаимодействуют с подобными источниками информации через WAP-шлюз. Этот шлюз должен уметь взаимодействовать с различными стандартами сотовой связи, такими как CDMA, GSM или GPRS. Однако, вполне возможно установить тестовый шлюз в сочетании с популярными веб-серверами (такими как MS IIS или Apache) прямо в вашей локальной сети. Мы не будем тут сильно вдаваться в детали процесса установки шлюза, однако нельзя не предостеречь вас от самой распространенной ошибки. Вам обязательно необходимо добавить определения следующих типов в конфигурацию веб-сервера.

WML text/vnd.wap.wml wml
WMLScript text/vnd.wap.wmlscript wmls

Теперь мы рассмотрим небольшой примерчик в котором пользователю будет предложено сделать выбор какой-то одной опции а затем на основе этого выбора с сервера будет загружена определенная информация. Для этого примера мы используем ASP. С тем же успехом мы могли написать скрипт использую Javascript, Servlets, Perl или любой другой язык. В следующем листинге приведен исходный код для нашей новой деки. В ней содержится всего один элемент <select>, который предлагает пользователю выбор из нескольких опций. Элемент <go> вызывает серверный скрипт с определенными параметрами.

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
       <card id="Order" title="Query Inventory">
               <p>
               <select name="Items" title="Items">
                       <option value="Books">Books</option>
                       <option value="Music">Music</option>
                       <option value="Video">Video</option>
                       <option value="Software">Software</option>
               </select>
               </p>
               <do type="accept" label="Query">
                       <go href="http://127.0.0.1/WML/Inventory.asp" method="post">
                               <postfield name="Items" value="$(Items)"/>
                       </go>
               </do>
       </card>
</wml>

Скрипт показанный на листинге 3 обрабатывает полученную из деки информацию и выводит на экран результат.

<%
Dim Body
If Request.Form("Items") = "Books" Then
       Body = "You selected Books!"
ElseIf Request.Form("Items") = "Video" Then
       Body = "You selected Video!"
ElseIf Request.Form("Items") = "Software" Then
       Body = "You selected Software!"
ElseIf Request.Form("Items") = "Music" Then
       Body = "You selected Music!"
End If
Response.ContentType = "text/vnd.wap.wml"%>
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card>
<p>
<%Response.write(Body)%>
</p>
</card>
</wml>

Несколько вещей необходимо напомнить для тех, кто захочет повторить этот пример в своих условиях. Вы обязательно должны "зарегистрировать" MIME типы на своем сервере для того, чтобы файлы WML и WMLScript правильно обрабатывались и отображались сервером.

.wml    text/vnd.wap.wml
.wmls   text/vnd.wap.wmlscript

Если вы хотите использовать картинки (WBMP) вам также необходимо добавить и этот MIME-тип:

.wbmp   image/vnd.wap.wbmp