Создание WAP-страниц в формате WML
Введение
В последнее время огромную популярность приобретают различные беспроводные устройства
доступа в internet. Достаточно упомянуть, что 2/3 населения Российской Федерации
владеют сотовыми телефонами и потенциальная аудитория посетителей internet с мобильных
устройств шире, чем обычных посетителей, пользующихся компьютерами. В отличие
от классического браузера, который общается с сервером по протоколу http, мобильные
устройства используют протокол wap (wireless application protocol). Протокол wap
определяет набор правил, которому должны следовать как wap-приложения, так и мобильные
устройства.
В настоящий момент для создания wap-страниц (аналог html-страниц для мобильных
устройств) используется либо язык разметки wml (wireless markup language), либо
xhtml. Оба языка разметки основаны на xml и подчиняются правилам форматирования
xml-документа. xhtml поддерживается не всеми сотовыми телефонами, поэтому в
данной статье будет рассмотрен wml.
Здесь не будут описываться стандартные теги, особенно те которые не отличаються
от тэгов, используемых при создании обычных html-страниц. Будет рассмотрена
структура wml документа, и взаимодействие php-скриптов с wml.
Структура wml документа
Вся информация в wml содержится в так называемых деках. Дек — это минимальный
блок данных, который может быть передан сервером. В деках находяться карты (<card>)
в одной деке всегда должна быть хоть одна карта, но может быть и несколько -
ограничений нет.
Простая wml страница взятая с wap.siemens.com.
<!doctype wml public "-//wapforum//dtd wml 1.1//en" "http://www.wapforum.org/dtd/wml_1.1.xml">
<wml>
<card title="siemens">
<p>
<a href="http://communication-market.siemens.de/wap">games and
more</a><br/>
<a href="http://communication-market.siemens.de/wap/countries.asp?content=rtlo">sounds
and graphics</a><br/>
<a href="/content/index.php?a=a_this&r=">this is siemens</a><br/>
<a href="/content/index.php?a=a_ff_kf_kffy2004&r=">key
figures</a><br/>
<a href="/content/index.php?a=a_journal&r=">siemens
journal</a><br/>
<a href="/contact/index.php">contact</a><br/>
<img src="http://server-uk.imrworldwide.com/cgi-bin/wapcount?"
alt=""/>
</p>
</card>
</wml>
- содержит стандартную инструкцию, указывающую,
что перед нами xml-документ. Этот тэг так же указывает на версию языка xml,
необходимую для будующих расширений языка.
<!doctype wml public "-//wapforum//dtd wml 1.1//en" "http://www.wapforum.org/dtd/wml_1.1.xml">
- объявляет тип документа — wml и адрес, по которому расположен файл с dtd.
dtd (document type definition) - это файл с описанием типа документа, отделённое
от главного xml-документа и определяющий набор правил для xml-документа в котором
стоит на него ссылка. Эти две строки предваряют собственно элементы языка и
должны содержаться в каждом wml-файле.
wml - открывающий тэг, аналогичен по смыслу тегу html в html-документах.
card - собственно тэг начинающий карту, соответствуюет тэгу body в html-документе,
но в отличие от body может поторяться в документе несколько раз.
Примечание
Новая строка начинается с тэга <br/>. Важно отметить, что слеш в конце
тэгов, не имеющих завершающего тэга обязателен в xml документах, иначе анализатор
сообщает об ошибке. Все дополнительные данные закрываються двойными ковычками
(title="hello!").
Дека - <wml></wml>
Карта - <card></card>
Пример страницы с несколькими картами:
<!doctype wml public "-//wapforum//dtd wml 1.1//en" "http://www.wapforum.org/dtd/wml_1.1.xml">
<wml>
<card title="card1">
<a href="#card2">go to card2</a><br/>
</card>
<card title="card2">
<a href="#card1">return card1</a><br/>
</card>
</wml>
Как видно ничего сложного! Однако следует помнить, что имеется ограничение на
общий размер wml страницы около 5~10 кб, в зависимости от модели телефона и
оператора сотовой связи. Поэтому количество карт не должно превышать разумного
предела.
Динамическая генерация. Конфигурирование серверов. mime тип.
Для того, чтобы обычный web-сервер, например, apache, превратить в wap-сервер,
необходимо в конфигурационном файле httpd.conf отыскать секцию addtype и добавить
следующую директиву
addtype text/vnd.wap.wml .wml.
При динамической генерации wml-страницы, браузеру необходимо отправить заголовок,
сообщающий, что он имеет дело не с обычной html-страницей, а с ресурсом, предназначенным
для мобильных устройств. Это можно осуществить при помощи функции header
<?php
# Отсылаем заголовок который "обьясняет" клиенту ,что это wml документ
header ( "content-type: text/vnd.wap.wml" );
?>
Так сформировать wml страницу при помощи php можно примерно следующим образом
<?php
# Отсылаем заголовок который "обьясняет" клиенту ,что это wml документ
header ( "content-type: text/vnd.wap.wml" );
#Выводим саму страницу
print '
<!doctype wml public "-//wapforum//dtd wml 1.1//en" "http://www.wapforum.org/dtd/wml_1.1.xml">
' ;
print '
<wml>
<card id="id1" title="card1">
hello! people this is my first wml page!
</card>
</wml>
' ;
?>
Заключение
В этой статье мы познакомились с тем, как создать простейшую wml страницу. В
следующих статьях будут рассмотрены различные тэги и их применение (wml-аналоги
элементов управления в html-формах).
Результаты работы wml-страниц можно просматривать при помощи следующих браузеров:
opera, winwap, klondike wap browser.
Источник: articles.org.ru
|