Основы 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 title="Поля"> <p> <fieldset title="О курсе"> Author: <input name="Автор" type="text"/><br/> Content: <input name="Содержание" type="text"/> </fieldset> </p> </card> </wml>

Данный код может иметь следующее представление на экране мобильного телефона:

---------------------------------- ------- Поля -------- О курсе Автор: Содержание: ----------------------------------



Элемент <do>


Теги - <do> ... </do>

На первой карте имеется элемент <do>, который определяет запускаемое событие. Использование атрибута type="accept" данного элемента приводит к выводу в левом нижнем углу экрана метки "Выбор".



Элементы задач:


Начальный тег Назначение WML



Карты


Теги - <card> ...... </card>

Карты всегда выводятся по одной. Колода WML из примера выше содержит две карты - одну для ввода пользователя и одну для вывода результатов.



Колода


Теги - <wml> ...... </wml>

Колода является документом WML и помещается между тегами <wml>.





Компиляция кода WML


Для тестирования и компилирования кода WML можно применять бесплатный пакет Nokia Mobile Internet Toolkit (см..http://forum.nokia.com/). Данное программное обеспечение полностью поддерживает спецификацию WAP 2.0, включая XHTML и CSS.

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



Все права


Определение переменной с помощью элемента ввода


Переменные можно задавать также с помощью элемента ввода (например, 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>



Определение переменной с помощью команды Setvar


При выполнении задачи (такой, как go, prev и refresh) элемент setvar можно использовать для задания переменной с определенным значением. Атрибуты name и value являются обязательными для этого элемента.

В данном примере создается переменная с именем a и значением 100:

<setvar name="a" value="100"/>



Переменная


Карта second выводит значение переменной $(course) с карты first- значения переменных сохраняются при перемещении между картами.



Переменные


Переменные сохраняют необходимые данные, когда пользователь перемещается в колоде с карты на карту. Необходимо помнить, что в именах переменных 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 title="Поля"> <p> Surname: <input name="Фамилия" size="10"/><br/> Name: <input name="Имя" size="10" /><br/> Second name: <input name="Отчество" size="10"/><br/> Age: <input name="Возраст" size="10" format="*N"/> </p> </card> </wml>

Данный код может иметь следующее представление на экране мобильного телефона:

----------------------- ----- Поля ---------- Фамилия: Имя : Отчество : Возраст : ----------------------



Пример 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 можно использовать синтаксический анализатор XML компании Microsoft.



когда пользователь нажимает на метку


Элемент <go> срабатывает, когда пользователь нажимает на метку "Выбор". Атрибут href="#second" данного элемента приводит к выводу на экран карты second.

Таймер


На карте WML можно использовать функцию таймера WML. Единица измерения времени в таймере равна 1/10 секунды.

<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card ontimer="next.wml"> <timer value="100"/> <p>Заголовок</p> </card> </wml>

Данный пример выводит заголовок в течение 10 секунд, а затем происходит переход к файлу "next.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 title="Выбор"> <p> <select> <option value="c">Курс по C </option> <option value="c++">Курс по C++</option> <option value="java">Курс по Java </option> </select> </p> </card> </wml>

Данный код может иметь следующее представление на экране мобильного телефона:

---------------------------- --- Выбор--- Курс по C Курс по C++ Курс по Java -----------------------------

В следующем примере показан список выбора, в котором пользователь может отметить более одной позиции:

<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card title="Выбор2"> <p> <select multiple="true"> <option value="c">Курс по C </option> <option value="c++">Курс по C++ </option> <option value="java">Курс по Java </option> </select> </p> </card> </wml>

Данный код может иметь следующее представление на экране мобильного телефона:

-------------------------- --- Выбор2--- Курс по C Курс по C++ Курс по Java ---------------------------



Задача 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> <p> <anchor> Вперед <go href="next.wml"/> </anchor> </p> </card> </wml>



Задача Noop


Noop является сокращением "no operation" - "нет операции". Таким образом, данная задача указывает, что делать ничего не надо, и используется, например, для переопределения элементов навигации между картами колоды.

Когда пользователь нажимает на экране слово/фразу, задача активизируется - для этого применяется тег <do>:

<?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> <do name="back" type="prev" label="Возврат"> <noop/> </do> </p> <p> Возврата нет </p> </card> </wml>

В данном примере используется тег <do>, чтобы создать на карте ссылку "Возврат". Когда пользователь нажимает ссылку "Возврат", на экране должна была бы появиться предыдущая страница, но тег <noop> отменяет эту операцию. Таким образом, когда пользователь нажмет ссылку "Возврат", ничего не произойдет.



Задача Prev


Данная задача предписывает возврат к предыдущей карте.

<?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> <anchor> Назад <prev/> </anchor> </p> </card> </wml>



Задача Refresh


Данная задача обновляет некоторые определенные переменные карты. При этом, если какая-либо из переменных выводится на экране, то экран будет обновлен. Следующий пример использует тег <anchor> для создания на карте ссылки "Обновить страницу". Когда пользователь нажмет эту ссылку, страница будет перерисована и для переменной a будет задано значение 15:

<?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> <anchor> Обновить <go href="first.wml"/> <refresh> <setvar name="a" value="15"/> </refresh> </anchor> </p> </card> </wml>

В приведенном примере используется тег <anchor> для создания на карте ссылки "Обновить". Когда пользователь нажмет эту ссылку, страница будет перерисована и для переменной a будет задано значение 15.



Задачи WML


Задача определяет действие, которое выполняется при наступлении события - например, входа на карту или нажатия ссылки.









<go> Переход к новой карте 1.1
<noop> Говорит, что ничего не надо делать. Используется для переопределения элементов уровня формы 1.1
<prev> Переход к предыдущей карте 1.1
<refresh> Обновляет некоторые определенные переменные карты 1.1