Интернет без проводов Структура WML • Поскольку любая WML-страница по определению является XML – документом, необходимо использовать спецификатор XML: <?xml version =“1.0”?> Затем объявляем корневой элемент документа: <!DOCTYPE wml PUBLIC “-//WAPFORUM//DTD WML 1.1//EN” “http://www.wapforum.org/DTD/wml_1.1.xml”> <wml> Текст страницы </wml> • Основным элементом любой WML-страницы является элемент с наименованием wml. <!ELEMENT wml (head?, temlate?, card+)> <!ATTLIST wml xml:lang NMTOKEN #IMPLIED %coreattrs; > Элементы head и template могут вообще не использоваться, а элементов card может быть несколько. В качестве атрибутов элемента wml используется xml:lang, указывающий на применяемый язык, и набор атрибутов, объявленный как параметрическая сущность с наименованием coreattrs. Эта сущность определяется так: <!ENTITY % coreattrs “id ID #IMPLIED class CDATA #IMPLIED” > Элемент head является необязательным неотображаемым заголовком страницы – деки. Определяетя он следующим образом: <!ELEMENT head (access | meta)+> <!ATTLIST head %coreattrs; > Заголовок состоит из нескольких элементов типа access и meta, один из которых должен присутствовать в содержимом элемента head. Дочерние субэлементы access и meta, определяются так: <!ELEMENT access EMPTY> <!ATTLIST access domain CDATA #IMPLIED path CDATA #IMPLIED %coreattrs; > <!ELEMENT meta EMPTY> <!ATTLIST meta http-equiv CDATA #IMPLIED name CDATA #IMPLIED forua CDATA #IMPLIED content CDATA #IMPLIED scheme CDATA #IMPLIED %coreattrs; > Элемент access в своих атрибутах domain и path содержит основное доменное имя и путь к данной страничке. А элемент meta позволяет устанавливать значения заголовков протокола. Элемент head может применяться только к деке. Отдельные странички не могут иметь его в своем составе. Эти странички являются экземплярами элемента card: <!ELEMENT card (onevent*, timer?, (do | p)*)> <!ATTLIST card title %vdata; #IMPLIED newscontext %boolean; “false” ordered %boolean; “true” xml:lang NMTOKEN #IMPLIED %cardev %coreattrs; > Страница может содержать либо некую отображаемую информацию, либо выполняемые инструкции для браузера. Отображаемая информация формируется при помощи. Выполняемые действия • Каждая страничка может содержать описание набора действий, которые браузер должен выполнить при наступлении заранее оговоренного события. • Элемент onevent содержит описание действий при наступлении некотых событий. <!ELEMENT onevent (%task)> <!ATTLIST onevent type CDATA #REQUIRED %coreattrs; > Параметр task указывает на один из предопределенных видов существующих задач-действий. Атрибут type обязателен и с помощью него мы назначаем событие, при наступление которого должна выполняться установленная задача. Задания могут бы определены следующим образом: <!ENTITY % task “go|prev | n oop | refresh”> • Элемент go применяется для принудителного перехода по не некоему URL. <!ELEMENT go (postfield | setvar)*> <!ATTLIST go href %HREF; #REQUIRED sendreferer %boolean; “false” method (post | get) “get” accept-charset CDATA #IMPLIED %coreatters > postfield – одно или несколько полей ввода setvar – система переменных method – выбирает один из двух механизмов выбора данных. • Переход на следующую страницу осуществляется при помощи элемента prev: <!ELEMENT prev (setvar)> <!ATTLIST prev %coreattrs; > Элемент noop является просто зарезервированной «заглушкой». Ни каких действий он не производит, но определение его необходимо: <!ELEMENT noop EMPTY> <!ATTLIST noop %coreattrs; > Оформление текста • Текст, помещаемый на страницу должен быть оформлен. Текст разбивается на абзацы с помощью элемента р: <!ELEMENT p (%fields; | do)*> <!ATTLIST p align %TAlign; “left” mode %WrapMode; #IMPLIED xml:lang NMTOKEN #IMPLIED %coreattrs; > Элемент fields определяется следующим образом: <!ENTITY %fields “%flow; | input | select | fieldset”> Все отображаемые неуправляемые элементы обозначаются сущностью flow: <!ENTITY %flow “text; | %layout; | img| anchor | a | table”> Определение текста выглядит следующим образом: <!ENTITY %text “PCDATA | %emph;”> То есть может быть либо просто текст либо отформатированные строки: <!ENTITY %emph “strong | b | i | u | big | small”> Определение элемента i создающего курсивный текст: <!ELEMENT i (%flow;)*> <!ATTLIST i xml:lang NMTOKEN %coreattrs; > #IMPLIED Таблицы • Таблица определяется элементом table и выглядит, так: <!ELEMENT table (tr)+> <!ATTLIST table title %vdata #IMPLIED align CDATA #IMPLIED columns %number #REQUIRED xml:lang NMTOKEN #IMPLIED %coreattrs; > tr – таблица обязана иметь хотя бы одну строку; columns – количество столбцов в таблице; title – заголовок таблицы. • Определение элементов-строки tr: <!ELEMENT tr (td)+> <!ATTLIST tr %coreattrs; > А сами ячейки определяются так: <!ELEMENT td (%text; |%layout; | img | anchor | a)*> <!ATTLIST td xml:lang NMTOKEN %coreattrs; > #IMPLIED Графики и гиперссылки • Гиперссылки в WML-страницах задаются при помощи элемента с наименованием а: <!ELEMENT a (#POCDATA | br | img)*> <!ATTLIST a href %HREF #REQUIRED title %vdata #IMPLIED xml:lang NMTOKEN #IMPLIED %coreattrs; > href - URL по которому будет произведен переход; title – содержит текст подсказки. Закладки осуществляются при помощи элемента anchor, определяются они так: <!ELEMENT anchor ( #PCDATA | br | img | go | pref )*> <!ATTLIST anchor title %vdata #IMPLIED xml:lang NMTOKEN #IMPLIED %coreattrs; > Органы ввода данных • В wml органы ввода данных объединяются не в формы, а в наборы. Набор органов ввода данных удаленным пользователем является элементом с наименованием fieldset: <!ELEMENT fieldset ( #fields | do )*> <!ATTLIST fieldset title %vdata #IMPLIED xml:lang NMTOKEN #IMPLIED %coreattrs; > Fields – параметрическая сущность определяющая набор отдельных полей ввода. <!ENTITY % fields “%flow; | input | select | fieldset”> • Элемент input предназначен для создания текстовых полей. Его определение имеет вид: <!ELEMENT input EMPTY> <!ATTLIST input name NMTOKEN #REQUIRED type (text|password) “text” value %vdata; #IMPLIED title %vdata #IMPLIED (….) xml:lang NMTOKEN #IMPLIED %coreattrs; > name - обязательный атрибут и указывает уникальное имя создаваемого поля ввода. • Элемент select позволяет создавать списки альтернатив. Определяется следующим образом: <!ELEMENT select (optgroup|option)+> <!ATTLIST select name NMTOKEN #REQUIRED type (text|password) “text” value %vdata; #IMPLIED multiple %boolean; “false” (….) xml:lang NMTOKEN #IMPLIED %coreattrs; > multiple – указывает тип переключателей(зависимые или независимые).