![]() |
||
|
aranea.ru || WML - Введение | 9.6 Экранирование задач карта/дека (Card/Deck)
9.6 Экранирование задач карта/дека (Card/Deck)Разнообразие элементов можно использовать для создания связи событий в карте. Эти связи можно объявлять на уровне деки:
Элемент, управляющий одним событием на уровне карты, преодолевает (или "экранирует") элемент, управляющий событием на уровне деки, если они оба устанавливают одно и то же событие. Элемент 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 может появляться на обоих уровнях - карты и деки:
type=cdata Тип элемента do. Этот атрибут предоставляет подсказку устройству вывода об использовании, по желанию автора, элемента, и должен использоваться устройством вывода для предоставления соответствующего преобразования в физической конструкции интерфейса пользователя. Авторы WML не должны полагаться на семантику или поведение индивидуального значения type, или на преобразовании type для частной физической конструкции. Все типы зарезервированы за исключением тех, которые помечены как экспериментальные или определяемые поставщиком. Устройства вывода должны принимать любой type, но могут обрабатывать любой нераспознанный тип, как эквивалент unknown. В следующей таблице символ * представляет любую строку, например Test* указывает любую строку, начинающуюся со слова Test. Хотя экспериментальные и определяемые поставщиком типы могут указываться в любом случае, они являются чувствительными к регистру, например типы VND-foo и vnd-foo отличаются.
label=vdata Если устройство вывода способно динамически устанавливать метки для элемента интерфейса пользователя, то атрибут определяет текстовую строку, пригодную для таких меток. Устройство вывода должно сделать все для установки метки в элементе интерфейса пользователя, и должно адаптировать метку к ограничениям элемента (например, сокращать строку). Если элемент не может быть помечен динамически, то этот атрибут может быть проигнорирован. Для хорошей работы на разнообразных устройствах вывода, метки должны состоять из шести символов или меньше. name=nmtokenЭтот атрибут устанавливает имя связи события do. Если элементы do определяются с одним и тем же именем, то они обращаются к одной и той же связи. Элемент do на уровне деки экранирует элемент do на уровне деки с тем же именем (смотрите раздел 9.6 для получения подробной информации). Является ошибкой определять два или больше элементов do с одинаковыми name в одной карте или в элементе template. Неопределенный name по умолчанию устанавливается на значении атрибута type. optional=BooleanЕсли этот атрибут имеет значение true, то устройство вывода может игнорировать этот элемент. Все активные элементы do, которые не были определены как факультативные (optional), должны предоставляться пользователю. Устройство вывода должно делать такие элементы доступными пользователю каким-либо способом. Другими словами, должна существовать возможность у пользователя активировать их (т.е. указывать задачи, связанные с элементом), через какой-либо элемент интерфейса пользователя. Все неактивные элементы do не должны предоставлять пользователю способ, которым он может активировать такие элементы. Элементы, которые назначены как факультативные (optional), могут игнорироваться по усмотрению устройства вывода. (Например, автор может захотеть позволить устройству вывода игнорировать типы, определяемые поставщиком, которые оно не распознает.) Атрибуты, определенные в другом месте
|