Ввод и задачи в WML. Таймер и переменные
Переменные WML
Переменные
Переменные сохраняют необходимые данные, когда пользователь перемещается в колоде с карты на карту. Необходимо помнить, что в именах переменных WML учитывается регистр символов.
Определение переменной с помощью команды Setvar
При выполнении задачи (такой, как go, prev и refresh ) элемент setvar можно использовать для задания переменной с определенным значением. Атрибуты name и value являются обязательными для этого элемента.
В данном примере создается переменная с именем a и значением 100:
<setvar name="a" value="100"/>
Определение переменной с помощью элемента ввода
Переменные можно задавать также с помощью элемента ввода (например, input, select, option и т.д.).
В данном примере создается переменная с именем course:
<card id="first"> <select name="course"> <option value="c">Курс по C </option> <option value="c++">Курс по C++ </option> <option value="c#">Курс по C# </option> <option value="java">Курс по Java </option> </select> </card>
Созданная в примере выше переменная используется следующим образом:
<card id="second"> <p>Ваш выбор: $(course)</p> </card>
Пример WML
В данном примере показано создание колоды 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 id="first" title="Курс"> <do type="accept" label="Выбор"> <go href="#second"/> </do> <p> <select name="course"> <option value="c">Курс по C </option> <option value="c++">Курс по C++ </option> <option value="c#">Курс по C# </option> <option value="java">Курс по Java </option> </select> </p> </card> <card id="second" title="Выбор"> <p> Курс: $(course) </p> </card> </wml>
Данный код может иметь следующий вывод на экране мобильного телефона (первая карта):
---------------------------- ----- Курс ---------- Курс по C Курс по C++ Курс по C# Курс по Java Выбор -----------------------------
Вторая карта может выглядеть следующим образом:
-------------------------- ----- Выбор ---------- Курс: C++ ---------------------------
Пояснения к примеру:
Пролог
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
Первые строки документа WML называются прологом. Пролог указывает, что это документ XML, затем определяет версию XML и используемый DTD.
Колода
Теги - <wml> ...... </wml>
Колода является документом WML и помещается между тегами <wml>.
Карты
Теги - <card> ...... </card>
Карты всегда выводятся по одной. Колода WML из примера выше содержит две карты - одну для ввода пользователя и одну для вывода результатов.
Элемент <do>
Теги - <do> ... </do>
На первой карте имеется элемент <do>, который определяет запускаемое событие. Использование атрибута type="accept" данного элемента приводит к выводу в левом нижнем углу экрана метки "Выбор".
Событие
Элемент <go> срабатывает, когда пользователь нажимает на метку "Выбор". Атрибут href="#second" данного элемента приводит к выводу на экран карты second.
Переменная
Карта second выводит значение переменной $(course) с карты first - значения переменных сохраняются при перемещении между картами.
Проверка кода WML
Для проверки правильности кода WML можно использовать синтаксический анализатор XML компании Microsoft.
Компиляция кода WML
Для тестирования и компилирования кода WML можно применять бесплатный пакет Nokia Mobile Internet Toolkit (см.. http://forum.nokia.com/). Данное программное обеспечение полностью поддерживает спецификацию WAP 2.0, включая XHTML и CSS.
Если код WML размещается на сервере IIS или Apache, то его не требуется компилировать, т.к. эту работу выполнит шлюз WAP. В этом случае нужно только поместить на сервер исходный код WML.