Поля ввода
На карте 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
можно определить возможность выбора варианта:
<?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
---------------------------
Группа полей
На карте
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>
Данный код
может иметь следующее представление на экране мобильного
телефона:
----------------------------------
------- Поля --------
О курсе
Автор:
Содержание:
----------------------------------
Задачи WML
Задача
определяет действие, которое выполняется при наступлении
события - например, входа на карту или нажатия ссылки.
Задача 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>
Задача 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.
Задача 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> отменяет эту
операцию. Таким образом, когда пользователь нажмет
ссылку "Возврат", ничего не произойдет.
Элементы задач:
Начальный тег |
Назначение |
WML |
<go> |
Переход к новой карте |
1.1 |
<noop> |
Говорит, что ничего не надо
делать. Используется для переопределения
элементов уровня формы |
1.1 |
<prev> |
Переход к предыдущей карте
|
1.1 |
<refresh> |
Обновляет некоторые
определенные переменные карты |
1.1 |
Таймер
На карте
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
Переменные
Переменные сохраняют необходимые данные, когда
пользователь перемещается в колоде с карты на карту.
Необходимо помнить, что в именах переменных 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.
|