ИНФОРМАЦИЯ,    ДИЗАЙН,    ПЕРЕВОДЫ,    РЕКЛАМА   .   .   .
w a p - с а й т
Информационный портал
Сегодня:  
admin@aranea.ru
+79068922256

  aranea.ru || WML - Введение | 9.6 Экранирование задач карта/дека (Card/Deck)

9.6 Экранирование задач карта/дека (Card/Deck)

Разнообразие элементов можно использовать для создания связи событий в карте. Эти связи можно объявлять на уровне деки:

  • Уровень карты: элемент, управляющий событием, может появляться внутри элемента card и определяет поведение обработки события для этой частной карты.
  • Уровень деки: элемент, управляющий событием, может появляться внутри элемента template и определяет поведение обработки события для всех карт в деке. Элемент, обрабатывающий событие на уровне деки, является эквивалентом для определения элемента, обрабатывающего событие в каждой карте.

Элемент, управляющий одним событием на уровне карты, преодолевает (или "экранирует") элемент, управляющий событием на уровне деки, если они оба устанавливают одно и то же событие. Элемент onevent на уровне карты будет экранировать элемент onevent уровня деки, если оба имеют один и тот же тип (type). Элемент do на уровне карты будет экранировать элемент do на уровне деки, если оба имеют одинаковое имя (name).

Для данной карты активные элементы, управляющие событием, определяются как элементы, которые управляют событием в карте и не связанные с задачей noop, плюс любые элементы, управляющие событием, определенные в шаблоне деки, не преодолеваемые (или не экранируемые) в карте или связанной задачей noop. Экранируемые элементы, управляющие событием, определенные в других картах, и элементы, управляющие событием, которые связаны с задачей noop, рассматриваются как неактивные элементы.

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

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

В следующем примере элемент do на уровне деки указывает, что задача prev должна выполняться при получении определенного действия пользователя. Первая карта наследует элемент do, определенный элементе template, и покажет do для пользователя. Вторая карта экранирует элемент do на уровне деки с помощью noop. Устройство вывода не будет показывать элемент do, когда будет выводиться вторая карта. Третья карта экранирует элемент do на уровне деки, приводя к тому, что устройство вывода выводит на экран альтернативную метку и выполняет задачу go, если выбирается do.

<wml>
<template>
<do type="options" name="do1" label="default">
<prev/>
</do>
</template>
<card id="first">
<!-- deck-level do not shadowed. The card exposes the
deck-level do as part of the current card -->
<!-- rest of card -->
...
</card>
<card id="second">
<!-- deck-level do is shadowed with noop.
It is not exposed to the user -->
<do type="options" name="do1">
<noop/>
</do>
<!-- rest of card -->
</card>
<card id="third">
<!-- deck-level do is shadowed. It is replaced by
a card-level do -->
<do type="options" name="do1" label="options">
<go href="/options"/>
</do>
<!-- rest of card -->
</card>
</wml>

9.7 Элемент Do

<!ENTITY % task "go | prev | noop | refresh">
<!ELEMENT do (%task;)>
<!ATTLIST do
type CDATA #REQUIRED
label %vdata; #IMPLIED
name NMTOKEN #IMPLIED
optional %boolean; "false"
xml:lang NMTOKEN #IMPLIED
%coreattrs;
>

Элемент do предоставляет для пользователей главный механизм взаимодействия с текущей картой, т.е. с элементом интерфейса пользователя на уровне карты. Предоставление элемента do зависит от устройства вывода, и авторы должны только допускать, что элемент преобразуется в уникальный элемент интерфейса пользователя, который пользователь сможет активировать. Например, преобразованный элемент может выглядеть как графическая кнопка (экранная или функциональная), последовательность команд, активируемых голосом, или любой другой интерфейс, который имеет простую операцию активации с постоянным состоянием взаимодействия. Когда пользователь активирует элемент do, то выполняется связанная с ним задача.

Элемент do может появляться на обоих уровнях - карты и деки:

    §
  • Уровень карты: элемент do может появляться внутри элемента card и может размещаться везде в текстовом потоке. Если устройство вывода предназначено для извлечения внутристрочного элемента do внутристрочно (т.е. в текстовом потоке), то оно должно использовать анкерный указатель элемента, как указатель для вывода. Авторы WML не должны полагаться на внутристрочный вывод элемента do, и не должны полагаться на корректное позиционирование внутристрочного вывода элемента.
  • §
  • Уровень деки: элемент do может появляться внутри элемента template, указывая, что элемент do находится на уровне деки. Элемент do на уровне деки применяется ко всем картам в деке (т.е. является эквивалентным для определенного элемента do внутри каждой карты). Для внутристрочного вывода устройство вывода должно вести себя так, как если бы элементы do на уровне деки размещены в конце текстового потока карты.
Атрибуты
type=cdata

Тип элемента do. Этот атрибут предоставляет подсказку устройству вывода об использовании, по желанию автора, элемента, и должен использоваться устройством вывода для предоставления соответствующего преобразования в физической конструкции интерфейса пользователя. Авторы WML не должны полагаться на семантику или поведение индивидуального значения type, или на преобразовании type для частной физической конструкции. Все типы зарезервированы за исключением тех, которые помечены как экспериментальные или определяемые поставщиком.

Устройства вывода должны принимать любой type, но могут обрабатывать любой нераспознанный тип, как эквивалент unknown.

В следующей таблице символ * представляет любую строку, например Test* указывает любую строку, начинающуюся со слова Test. Хотя экспериментальные и определяемые поставщиком типы могут указываться в любом случае, они являются чувствительными к регистру, например типы VND-foo и vnd-foo отличаются.

.
Таблица 1. Предварительно определенные типы DO
Тип Описание
accept Положительный прием
prev Обратная навигация в истории
help Запрос помощи. Может зависить от контекста.
reset Очистка или переустановка.
options Запрос, зависимый от контекста, для вариантов или дополнительных операций.
delete Отменить пункт или выбор.
unknown Общий элемент do. Эквивалентен пустой строке (например, type="")
X-*, x-* Экспериментальный тип. Эта установка не используется.
vnd.*, VND.* и любые комбинации [Vv] [ Nn] [ Dd].* Типы, определяемые поставщиком или устройством вывода. Эти установки не зарезервированы. Поставщики должны указывать названия с форматом VND.CO-TYPE, где CO – сокращенное название компании, и type – тип элемента do. Смотрите [RFC2045] для более подробной информации.

label=vdata

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

Для хорошей работы на разнообразных устройствах вывода, метки должны состоять из шести символов или меньше.

name=nmtoken

Этот атрибут устанавливает имя связи события do. Если элементы do определяются с одним и тем же именем, то они обращаются к одной и той же связи. Элемент do на уровне деки экранирует элемент do на уровне деки с тем же именем (смотрите раздел 9.6 для получения подробной информации). Является ошибкой определять два или больше элементов do с одинаковыми name в одной карте или в элементе template. Неопределенный name по умолчанию устанавливается на значении атрибута type.

optional=Boolean

Если этот атрибут имеет значение true, то устройство вывода может игнорировать этот элемент.

Все активные элементы do, которые не были определены как факультативные (optional), должны предоставляться пользователю. Устройство вывода должно делать такие элементы доступными пользователю каким-либо способом. Другими словами, должна существовать возможность у пользователя активировать их (т.е. указывать задачи, связанные с элементом), через какой-либо элемент интерфейса пользователя.

Все неактивные элементы do не должны предоставлять пользователю способ, которым он может активировать такие элементы. Элементы, которые назначены как факультативные (optional), могут игнорироваться по усмотрению устройства вывода. (Например, автор может захотеть позволить устройству вывода игнорировать типы, определяемые поставщиком, которые оно не распознает.)

Атрибуты, определенные в другом месте
  • xml:lang (смотрите раздел 8.8)
  • id (смотрите раздел 8.9)
  • class (смотрите раздел 8.9)
← Назад | Вперед →
Copyright © 2006 -  aranea.ru