3.3 Пишем на WML

WML во многом напоминает HTML, и изучить его не составляет труда. Однако при использовании WML приходится придерживаться нескольких неформальных рекомендаций.

По WAP-протоколу данные в телефон поступают в виде колод (desks), размер одной колоды невелик — порядка 1,5 Кб. Это сделано для повышения эффективности трафика, и разработчику желательно предварительно компилировать WML-тексты для подбора их оптимальных размеров. Колода состоит из карт (cards), каждая из которых описывает один законченный модуль взаимодействия с пользователем (интерактивный элемент экрана) и определяет способ навигации внутри колоды.

WML-тексты чувствительны к регистру (как тексты на языке Си), и в этом состоит одна из хоть и непринципиальных, но важных в практическом плане особенностей WML. Последовательности символов переводов строки, табуляции, пробелов всегда преобразуются в один пробел.

Все WML-документы имеют расширение .wml и начинаются с трех стандартных строк:


 
<?xml version=“1.0”?>
(номер версии XML)
<!DOCTYPE wml PUBLIC “-//WAPFORUM//DTD WML 1.1//EN” (идентификатор SGML-описания языка WML)
<A HREF="http://www.wapforum.org/DTD/wml_1.1.xml">http://www.wapforum.org/DTD/wml_1.1.xml</A>”> (Web-адрес DTD-определения WML-документа)


Колода берется в теги

<wml>

...

</wml>


Внутри колоды друг за другом следуют описания карт:

<card>
</card>
<card>

...

</card>

...


С помощью специальных шаблонов можно определять дополнительные стандартные действия при обращении к некоторым или ко всем картам колоды.

Каждая карта должна иметь свой идентификатор и название:

<card id=“wap.pcweek.card1” title=“pcweek.ru demonstraciya”>

Здесь надо отметить, что так как далеко не все используемые в нашей стране WAP-телефоны русифицированы, WAP-дизайнеру обязательно надо предлагать несколько видов представления своих ресурсов — в частности, на транслите (латинскими буквами).

Большинство тегов WML — парные, т. е. открывающие и закрывающие, как того требует стандарт XML, за небольшими исключениями, например, кроме тега новой строки


Простейший тег <p> описывает один параграф текста:

<p>

>Dobro pozhalovat’ na wap-server pcweek.ru!

</p>

Законченная страничка (она может быть, например, сохранена на сайте wap.pcweek.ru как заглавная — index.wml) полностью запишется так:

<?xml version=“1.0”?>

<!DOCTYPE wml PUBLIC “-//WAPFORUM//DTD WML 1.1//EN”

“<A HREF="http://www.wapforum.org/DTD/wml_1.1.xml">www.wapforum.org/DTD/wml_1.1.xml</A>”>

<wml>

<card id=“wap.pcweek.card1” title=“pcweek.ru demonstraciya”>

<p>


Dobro pozhalovat’ na wap-server pcweek.ru!

</p>

</card>

</wml>


Если выводимый текст не умещается на мониторе трубки, то пользователю придется его скроллировать, поэтому лучше не создавать больших карт и колод, а разбивать их на маленькие составляющие, снабжая продуманными средствами навигации.

Для привязки различных функций к средствам управления телефона служит тег . Его важнейшие атрибуты — type (тип действия; значение accept задает переход к следующей карте, значение prev — к предыдущей), name (идентификатор для связи с данной реализацией тега) и label (название действия, выводимое на экран в область навигации).

Конкретный адрес перехода задается непарным тегом .

Среди других WML-тегов можно отметить средства захвата пользовательского ввода, создания всевозможных списков, расширенной навигации, форматирования текста. Кроме того, имеются переменные, начинающиеся с символа $ и позволяющие передавать данные между картами.

Следующий пример описывает колоду из двух карт. Первая, с заголовком экрана “Карта 1”, выводит подсказку “Vvedite imya:”, а после ввода и выбора действия “Sled” активизирует вторую карту, которая показывает на экране телефона приветствие с ранее введенным именем и позволяет выполнить переход на сайт wap.zdnet.ru:

<?xml version=“1.0”?>

<!DOCTYPE wml PUBLIC “-//WAPFORUM//DTD WML 1.1//EN”

“<A HREF="http://www.wapforum.org/DTD/wml_1.1.xml">www.wapforum.org/DTD/wml_1.1.xml</A>”>

<wml>

<card id=“Card1” title=“Karta 1”>

<do type=“accept” label=“Sled”>

<go href=“#Card2”/>

</do>

<p>

Vvedite imya: <input name=“username”/>

</p>

</card>

<card id=“Card2” title=“Karta 2”>

<do type=“accept” label=“ZdNet.Ru”>

<go href=“http://wap.zdnet.ru”/>

</do>

<p>

Privet, $(username)!

</p>

</card>

</wml>

На WML-страничке можно также размещать небольшие сценарии на языке WMLScript, представляющем собой подмножество JavaScript и оптимизированном для выполнения на мобильных устройствах с малыми вычислительными ресурсами.


      Сформированную таким образом WML-страничку можно положить, например, по обычному FTP-протоколу на поддомен wap.pcweek.ru (это стандартная практика — организовывать для WAP-доступа сайты, начинающиеся не с www, а с wap), после чего этот поддомен станет новым российским WAP-ресурсом.

<<<-НАЗАД-<<< ::: <<<-ГЛАВНАЯ->>> ::: >>>-ВПЕРЁД->>>