WML (Wireless Markup Language) − мова розм≥тки, ¤ка базуЇтьс¤ на мов≥ XML (Extensible Markup Language). ќф≥ц≥йна специф≥кац≥¤ WML розроблена ≥ п≥дтримуЇтьс¤ WAP Forum, виробничим консорц≥умом, заснованим Nokia, Phone.com, Motorola ≥ Ericsson. ÷¤ специф≥кац≥¤ визначаЇ синтаксис, зм≥нн≥ й елементи, ¤к≥ використовуютьс¤ у файлах WML. ќстаннЇ визначенн¤ типу документа (Document Type Definition) дл¤ тих, хто знайом ≥з XML, доступн≥ за адресою: http://www.wapforum.org/DTD/wml_1.1.xml
ѕризначенн¤ WML − опис зм≥сту ≥ користувацького ≥нтерфейсу дл¤ особливого класу вузько л≥н≥йних пристроњв, типу Palm Pilot, ст≥льникових телефон≥в та пейджер≥в.
WML спец≥ально заснований з ор≥Їнтац≥Їю на особливост≥ таких пристроњв, а саме: малоформатний екран, вузьку смугу пропусканн¤ каналу зв'¤зку, малу пам'¤ть ≥ обмеженн¤ на "обчислювальн≥" зд≥бност≥. ¬раховуючи це та невисокий р≥вень стандартизац≥њ, у мов≥ "в≥зуальноњ розм≥тки" дл¤ WAP пристроњв своЇ законне м≥сце зайн¤ла ≥де¤ добре структурованих даних − WML успадковуЇ синтаксис XML.
¬ажко у¤вити, що хтось буде п≥дключати до ст≥льникового телефону мишу, тому модель "point-and-click" дл¤ WAP не годитьс¤ (принаймн≥,† так вважаЇ група розробник≥в мови), ≥ велика роль у WML в≥дводитьс¤ ≥ншим механ≥змам под≥й. ¬ ¤кост≥ альтернативи модел≥ "point-and-click" можна привести можлив≥сть керуванн¤ голосом. ≈крани WAP пристроњв в основному зустр≥чаютьс¤ двох вид≥в: вертикальн≥ або горизонтальн≥, але поЇднуЇ† њх† те, що обидва типи екран≥в Ї малоформатними.
WML код вигл¤даЇ† ¤к ≥ HTML код, але з† б≥льш твердими вимогами† до парност≥† тег≥в, використанн¤ рег≥стра й обмеженн¤ атрибут≥в лапками . ¬ WML використовуютьс¤ наступн≥ синтаксичн≥ компоненти Ц символьн≥ сутност≥, елементи, атрибути, коментар≥, зм≥нн≥ ≥ секц≥њ CDATA.
WML на в≥дм≥ну в≥д HTML не маЇ у своЇму актив≥ п≥дтримки великого набору тег≥в.††
ѕри використанн≥ WML доводитьс¤ дотримуватис¤ дек≥лькох неформальних рекомендац≥й. ѕо WAP-протоколу дан≥ в телефон поступають у вигл¤д≥ колод (desks), розм≥р одн≥Їњ колоди невеликий приблизно 1,5 б. ÷е зроблено дл¤ п≥двищенн¤ ефективност≥ траф≥ка, ≥ розробнику необх≥дно заздалег≥дь комп≥лювати WML-тексти дл¤ п≥дбору њх оптимальних розм≥р≥в. олода складаЇтьс¤ з карт (cards), кожна з ¤ких описуЇ один зак≥нчений модуль взаЇмод≥њ з користувачем (≥нтерактивний елемент екрана) ≥ визначаЇ спос≥б нав≥гац≥њ всередин≥ колоди. WML-тексти, чутлив≥ до рег≥стра (¤к тексти на мов≥ —), що ¤вл¤Ї собою одну хоч ≥ непринципову, але важливу в практичному план≥ особлив≥сть WML. ѕосл≥довност≥ символ≥в переведенн¤ р¤дка, табул¤ц≥њ, пропуск≥в завжди перетворюютьс¤ в один пропуск.† ¬с≥ WML-документи мають розширенн¤ wml ≥ починаютьс¤ з трьох стандартних р¤дк≥в:
<?xml version=У1.0Ф?>
(номер верс≥њ XML)
†††††
<!DOCTYPE wml
PUBLIC У-//WAPFORUM//DTD WML 1.1//ENФ (≥дентиф≥катор†††††††
†††††††††† ††††††††††††††††††††††††††††††††††††††††
SGML-опису мови WML)
У<A
HREF="http://www.wapforum.org/DTD/wml_1.1.xml">
www.wapforum.org/DTD/wml_1.1.xml</A>Ф>(Web-адреса
DTD-визначенн¤
†††††††††††††††††
WML-документа)
ѕерш≥ два р¤дки Ї так званим прологом XML-документа. ¬ цьому пролоз≥ визначаЇтьс¤ верс≥¤ XML† ≥ DTD (вказ≥вник на файл, що м≥стить DTD).
—л≥дом за прологом, у кожному XML-документ≥
м≥ститьс¤ один Їдиний елемент, що м≥стить у соб≥ ≥нш≥ п≥делементи та сутност≥.
“ак само ¤к ≥ в HTML цими елементами Ї кутов≥ дужки: <>
≥ </>
. Ќаприклад:<element>data</element>
. ” документ≥
повинен м≥ститис¤ т≥льки один елемент, ¤кий описуЇ даний документ. ” WML цим
елементом Ї <wml>
. ¬с≥ ≥нш≥ елементи
м≥ст¤тьс¤ вже всередин≥ нього.
олода беретьс¤ в теги
<wml>
.
..
</wml>
¬середин≥ колоди один за другим сл≥дують описи
карт:
<card>
...
</card>
<card>
...
</card>
...
ƒва найпоширен≥ш≥ способи збереженн¤
≥нформац≥њ всередин≥ XML-документа це елементи†
≥ њхн≥ атрибути. ≈лементи визначають структурну розм≥тку всередин≥
документа в≥дкритт¤м ≥ закритт¤м визначених тег≥в. ≈лементи, в свою чергу
можуть м≥стити п≥делементи. јтрибути в основному використовуютьс¤ дл¤ опису
елемент≥в. оментар у WML, також ¤к ≥ в HTML†
обмежений тегами <!--
≥ -->
.
«а допомогою спец≥альних шаблон≥в можна визначати додатков≥ стандартн≥ д≥њ при зверненн≥ до де¤ких або до вс≥х карт колоди. ожна карта повинна мати св≥й ≥дентиф≥катор ≥ назву:††††
†††† <card
id=Уwap.pcweek.card1" title=Уpcweek.ru demonstraciya">††
“ут необх≥дно зазначити, що оск≥льки далеко не вс≥ WAP-телефони, ¤к≥ використовуютьс¤ в наш≥й крањн≥ русиф≥кован≥, а тим б≥льше украњн≥зован≥, WAP-дизайнеру обов'¤зково потр≥бно пропонувати дек≥лька вид≥в представленн¤ своњх ресурс≥в,†† зокрема,† на трансл≥т≥ (латинськими буквами).
Ѕ≥льш≥сть тег≥в WML†† парн≥, тобто в≥дкриваютьс¤ й закриваютьс¤, ¤к того вимагаЇ
стандарт XML, за невеликими виключенн¤ми, наприклад, кр≥м тега нового
р¤дка††††††† Ќайпрост≥ший тег <р>
описуЇ один параграф тексту:††
†††††† <р> Dobro
pozhalovat' na wap-server pcweek.ru! </р>†
«ак≥нчена стор≥нка повн≥стю запишетьс¤ так:††††††
† <?xml version=У1.0Ф?>
<!DOCTYPE wml PUBLIC
У-//WAPFORUM//DTD WML 1.1//ENФ
У<A
HREF="http://www.wapforum.org/DTD/wml_1.1.xml">
††††† †www.wapforum.org/DTD/wml_1.1.xml</A>Ф>
†
<wml>
†††††
<card
id=Уwap.pcweek.card1Ф title=Уpcweek.ru demonstraciyaФ>
†††††††††
<p>
† †††††††††††††
Dobro pozhalovatТ na wap-server pcweek.ru!
†††††††††
</p>
†††††
</card>
</wml>
якщо текст, ¤кий виводитьс¤ не пом≥щаЇтьс¤ на
екран≥ трубки, то користувачев≥ доведетьс¤ його скроллювати, тому краще не
створювати великих карт ≥ колод, а розбивати њх на маленьк≥ складов≥,
забезпечуючи њх необх≥дними продуманими засобами нав≥гац≥њ. ƒл¤ прив'¤зки
р≥зних функц≥й до засоб≥в управл≥нн¤ телефону служить тег <do>
.† …ого найважлив≥ш≥
атрибут膆 type
(тип д≥њ; значенн¤ accept задаЇ перех≥д до наступноњ карти, значенн¤ prev до попередньоњ), name
(≥дентиф≥катор дл¤
зв'¤зку з даною реал≥зац≥Їю тега) ≥ label
(назва д≥њ, що виводитьс¤ на екран в область нав≥гац≥њ).† онкретна адреса переходу задаЇтьс¤ непарним
тегом <go>
.
—еред ≥нших WML-тег≥в можна в≥дм≥тити засоби захопленн¤ призначеного дл¤ користувача введенн¤, створенн¤ вс≥л¤ких списк≥в, розширеноњ нав≥гац≥њ, форматуванн¤ тексту. Ќа WML-стор≥нц≥ можна також розм≥щувати невелик≥ сценар≥њ на мов≥ WMLScript, що ¤вл¤Ї собою п≥дмножину JavaScript ≥ оптим≥зована дл¤ виконанн¤ на моб≥льних пристро¤х з малими обчислювальними ресурсами.
ƒокладн≥ше вс≥ ц≥ WML-теги† будуть розгл¤нут≥ нижче.
” WML використовуютьс¤ глобальн≥ зм≥нн≥, в ¤ких можна збер≥гати дан≥ на р≥вн≥ поточного сеансу. «а допомогою зм≥нних реал≥зовуЇтьс¤ механ≥зм збереженн¤ даних в одн≥й з карт дл¤ њњ подальшого використанн¤ в ≥нш≥й. «м≥нн≥ можуть бути визначенн≥ та ≥н≥ц≥ал≥зован≥ дек≥лькома способами:
Ј
«м≥нн≥, ¤к≥ починаютьс¤ з символу $ п≥сл¤
¤кого вказуЇтьс¤ ≥мТ¤ зм≥нноњ. Ќаприклад: $(name)
або $(surname)
тощо.
Ј
¬икористовуючи
тег <setvar>
¤к результат виконанн¤ користувачем
визначених д≥й. р≥м того, цей тег може бути використаний дл¤ визначенн¤
зм≥нноњ всередин≥ наступних тег≥в: <go>
, <prev>
, <refresh>
. Ќаприклад: показаний елемент створюЇ зм≥нну x ≥ надаЇ њй значенн¤
"123"†
<setvar name="x" value="123"/>
Ј
«м≥нним також можуть присвоюватис¤
значенн¤ тег≥в <input>
, <select>
, <option>
та ≥нш≥. ѕри цьому
автоматично створюЇтьс¤ зм≥нна з ≥м'¤м цього тега. ѕо зак≥нченн≥ введенн¤, њй
присвоюЇтьс¤ значенн¤, ¤ке в≥дпов≥даЇ†
вибору користувача. Ќаприклад, наступний тег створить зм≥нну з ≥м'¤м
"x"
<select name="x" title="X Value:">
ЌезважаючинатещоминеописуЇмоWMLScript, необх≥днозазначити, щоWML≥WMLScriptвикористовують одн≥ ≥ т≥сам≥ зм≥нн≥врамкаходн≥Їњдеки.
¬с≥ теги† WML можна умовно под≥лити на так≥ категор≥њ:
1. теги дл¤ колоди/карт;
2. текстов≥ теги;
3. теги форматуванн¤,
4. нав≥гац≥њ,
5. введенн¤ даних†
6. керуванн¤ задачами/д≥¤ми.
–озгл¤немо детальн≥ше ц≥ категор≥њ.
Ј
<access>
− задаЇ
≥нформац≥ю про елемент доступу;
Ј
<card>
− визначаЇ карту;
Ј
<head>
−задаЇ заголовок
документа;
Ј
<meta>
− вказуЇ
мета≥нформац≥ю;
Ј
<template>
− визначаЇ
шаблон;
Ј
<wml>
− вказуЇ початок† WML-документа, а точн≥ше колоди;
Ј
<!-->
− початок
коментар¤.
Ј
<p>
− параграф. ÷ей тег
маЇ наступн≥ атрибути: align
− задаЇ спос≥б вир≥внюванн¤ тексту,
приймаЇ значенн¤ right
(по правому краю), center
(по
центру) або left
(по л≥вому краю) та mode
− задаЇ, чи буде текст на екран≥ з авто-переносом (wrap)
чи н≥ (nowrap);
Ј
<br/>
−† перех≥д на новий р¤док;
Ј
<table>
− створюЇ
таблицю;
Ј
<tr>
† − описуЇ р¤док таблиц≥;
Ј
†<td>
†− описуЇ стовпець таблиц≥.
ќск≥льки на екран виводитьс¤ по одн≥й карт≥,
то в тез≥ <card>
передбачений атрибут id
− внутр≥шн≥й
≥дентиф≥катор дл¤ переход≥в, а також видимий на екран≥ заголовок title
.
ƒл¤ форматуванн¤ тексту, ¤к ≥ в HTML, використовуютьс¤ наступн≥ теги:
Ј
<em>
≥ <I>
− в≥дображаЇ
вказаний фрагмент тексту курсивом
Ј
<strong>
− †в≥дображаЇ вказаний фрагмент тексту нап≥вжирним шрифтом
Ј
<u>
− †п≥дкреслюЇ вказаний фрагмент тексту
Ј
<big>
− †текст б≥льшого розм≥ру
Ј
<small>
− †текст маленького розм≥ру.
Ј
<img/>
− вставка граф≥чного зображенн¤.
ƒл¤ нав≥гац≥њ та установки г≥перпосилань
використовуютьс¤ теги<anchor>
≥ <a>
—емантика <a>
повторюЇ HTML, а в тез≥ <anchor>
використовуЇтьс¤ або п≥дтег <go>
з атрибутом href
, що задаЇ адресу посиланн¤, або <prev>
− повернутис¤ до попереднього екрана.
¬≥добразивши стор≥нку на екран≥, ми побачимо
першу карту. ўоб перейти до наступноњ, необх≥дно ¤кось адресувати† карти, дл¤ цього служить атрибут id
тега <card>
− ун≥кальний
≥дентиф≥катор карти. «верн≥ть увагу також на атрибут title
− назву карти, що маЇ зм≥ст, зокрема, дл¤ закладок.
††††††††††† <anchor>List
of Tales
††††††††††† <go
href="tales.wml"/></anchor>
††††††††††† <anchor>Previous
page<prev/></anchor>
††††††††††† <a
href="story.wml">goto Story</a><br/>
¬ наведеному приклад≥ посиланн¤ встановлюютьс¤
за допомогою тегу <anchor>
та
традиц≥йного тегу <a>
. ” <anchor>
† Ї два атрибути: href
− визначаЇ об'Їкт, на ¤кий ми посилаЇмос¤, ≥ title
− екранна п≥дказка, ¤ка ≥дентиф≥куЇ зв'¤зок.
Ѕезумовно, усю м≥ць ≥де¤ зм≥нних здобуваЇ при можливост≥ щось одержати в≥д користувача. ƒл¤ цього передбачений комплект тег≥в введенн¤, досить близький до своњх HTML аналог≥в:
ѕоле <input>
− призначене дл¤ введенн¤ даних користувачем
select/option
† − поле†
вибору ≥з† заздалег≥дь заданого
списку.
<postfield>
− аналог прихованих <input>
у HTML-формах. Ќасправд≥, це б≥льш потужн≥ша р≥ч, тому що маючи зм≥нн≥, у <postfields>
†
можна збирати й перегруповувати ≥нформац≥ю.
јтрибути name тег≥в <input>
≥ <select>
збер≥гаютьс¤ ¤к зм≥нн≥ у всьому простор≥ колоди ≥ виступають
параметрами в переходах по <go>
≥ <a>
. «а допомогою ≥нших атрибут≥в<input>
типу type
, format
≥ maxlength
, можна керувати форматним введенн¤м. ¬икористовуючи тег <fieldset>
, можна задавати де¤к≥ стил≥ оформленн¤.
ѕриклад<input>
≥<select>
<wml>
<card id="search" title="search">
<p align="left">
CD: <input name="band" title="JazzBand:"
size="18"
† value="Rolling
Stones" emptyok="false"/><br/>
Type: <select name="type" value="double"
title="Type:">
† <option
value="single">Single CD</option>
† <option
value="double">Double CD</option>
</select>
</p>
</card>
<card id="add" title="Add CD">
CD: <input name="CD" size="18"
type="text" /><br/>
Price: <input name="Price"
size="8"/><br/>
</card>
</wml>
“ут атрибут name
− ≥м'¤ зм≥нноњ, куди заноситьс¤ значенн¤, type
− тип форми ( текст або число), value
− значенн¤ за замовчуванн¤м, aemptyok
показуЇ, чи припустимий в ¤кост≥†
значенн¤ порожн≥й р¤док..
"ƒ≥њ" (tasks, do)
використовуютьс¤ дл¤ структур типу меню ≥ дл¤ опису окремих д≥й, наприклад, дл¤
вибору новоњ карти/посиланн¤. “ипов≥ "виконавч≥" теги д≥й − це <go>
, <prev>
, <refresh>
(перечитати поточну карту) або <noop>
(н≥чого не робити). ƒ≥њ на р≥вн≥ конкретноњ карти описуютьс¤ за
допомогою тегу <do>
, а на р≥вн≥ вс≥Їњ колоди
−† <template>
.
«а допомогою тега <timer>
≥ атрибута ontimer
тега <card>
можна, наприклад, на де¤кий час УзаморозитиФ стор≥нку. Ќа практиц≥
часто застосовуЇтьс¤ ontimer="url"
,
що говорить, що де¤кий час карта повинна в≥дображатис¤, а пот≥м повинен
завантажитис¤ ресурс, ¤кий знаходитьс¤ за адресою url. „ас в
атрибут≥ value
вказуЇтьс¤ в 0,1 сек.
<wml>
<card id="variable" title="Variable"
ontimer="WMLScript.wml">
†<timer
value="5"/>
†<p
align="left"> Wait for 5 seconds ... </p>
</card>
<!-- Card and deck linking -->
<card id="input1" title="Input">
<do type="Next input properties">
† <go
href="#input2"/> </do>
<do type="Task properties">
† <go
href="Task.wml"/> </do>
† ...
</card>
</wml>
¬≥дпов≥дно до WML-специф≥кац≥њ, в тега <do>
повинн≥
бути ун≥кальн≥ атрибути name, але ¤кщо ¤ке-небудь значенн¤ атрибута
name не вказане, то воно екв≥валентне значенню атрибута type
. ” таких випадках р≥зн≥ теги <do>
легко можуть почати перетинатис¤ по ≥менах, що може стати джерелом
важко д≥агностованих помилок.
<do type="accept" name="yeah"
label="Menu">
<go href="Menu.asp#menu"/>
</do>
<do type="accept" name="blah"
label="Back">
<prev/>
</do>
” WML Їтакожможлив≥стьпризначатиклав≥ш≥нав≥гац≥њ. “ег<onevent
type="button"><д≥¤></onevent>
дозвол¤Їприписатидоодн≥Їњзкнопоктелефону (залежитьв≥дмодел≥) де¤куд≥ю. ¬ ¤кост≥ д≥њ
зазвичай використовуЇтьс¤ <go href="url"/>
. “ак, додавши до карти р¤док <onevent type=
"GO"><go href="#card2"/></onevent>
, ми призначимо кнопц≥ GO перех≥д безпосередньо в меню. ѕриклад,
<do type="accept" label="Search">
<go
href="table.asp?srch=$varsearch"/></do>
≥люструЇ ≥нший вар≥ант перепризначенн¤
стандартного меню телефону й спос≥б передач≥ зм≥нних у сервер-ор≥Їнтован≥
скрипти. «наченн¤ параметра type
показуЇ, ¤ка саме
клав≥ша буде перевизначена (у даному випадку кнопка, що в≥дпов≥даЇ OK).† ѕреф≥кс $
перед ≥м'¤м зм≥нноњ говорить про те, що буде використане значенн¤
зм≥нноњ, а не саме слово "varsearch"
.
¬ даний час† WML п≥дтримуЇ граф≥чний формат, ¤кий називаЇтьс¤ WBMP (Wireless BMP type 0) −монохромн≥ (двокол≥рн≥) зображенн¤. ‘ормат WBMP type 0 маЇ наступн≥ характеристики :
No compression
One bit color (white=1, black=0)
One bit color deep (monochrome)
ƒл¤ вставки в WML картинки призначений тег <img/>
, в ¤кому, ¤к ≥ в HTML, дл¤ посиланн¤ на джерело картинки
використовуЇтьс¤ атрибут src
. “иповий вигл¤д тега
<img>
:
<img alt=†
src="url"†
localsrc="icon"
† align=† height=†
width=† vspace=† hspace= />.
ѕризначенн¤ атрибут≥в здеб≥льшого очевидно.
ѕо¤сненн¤ вимагаЇ лише localsrc
, в≥н дозвол¤Ї,
зам≥сть src
, вказати в ¤кост≥ джерела внутр≥шню п≥ктограму браузера. јтрибут align
задаЇ вир≥внюванн¤ картинки ≥ може приймати наступн≥ значенн¤: top
, bottom
≥ middle
.
ѕриклад використанн¤ граф≥чних зображень у ¤кост≥ г≥перпосилань.
<anchor title="Home">
†<img
alt="Home" src="url" localsrc="house" />Home
†<go
href="default.wml"/>
</anchor><br/>
ƒл¤ конвертац≥њ у формат WBMP найкраще вибирати маленьк≥ контрастн≥ зображенн¤.
ћаксимальний розм≥р малюнку в байтах залежить в≥д пристрою (телефону), але в≥н не повинен перевищувати обмежень на розм≥р карти (близько 1,4k). ¬≥дпов≥дно, граничний розм≥р у п≥ксел¤х дл¤, скажемо, Nokia 7110 складаЇ близько 96 x 65 (width, height), хоча ф≥зичний екран (без скрол≥нга) ще менший ≥ маЇ розм≥р 96 x 44 (4 р¤дка по 11 п≥ксел≥в), так д뤆 Ericsson R320 ¾ 101x52 (р¤док у 13 п≥ксел≥в). Ќеобх≥дно враховувати, що п≥ксел≥ окремих пристроњв не завжди квадратн≥.
Ќаведемо де¤к≥ засоби дл¤ роботи з WBMP зображенн¤ми:
Ј Ќевеликий плаг≥н †УUnWired plug-inФ ф≥рми RCP Distributed Systems. ƒозвол¤Ї збер≥гати у вид≥ WBMP малюнки з Photoshop 5.x чи Paintshop Pro на платформ≥ Windows (у команд≥ меню Save As з'¤витьс¤ пункт "UnWired.wbmp").
Ј Wapaint.dll (в≥д Wapaint.com) − Active Server module, призначений дл¤ роботи в ASP-скриптами на сервер≥ ≥ зручний дл¤ генерац≥њ динам≥чних малюнк≥в (типу статистичних д≥аграм ≥ ≥н.).
Ј –едактора зображень з NokiaSDK.
ѕриклад† виклику динам≥чних зображень через ASP ≥ Wapaint.dll
<wml>
<card id="home" title="example">
REM GRAPH.asp is the image to construct
<p align="center">example<br/>
<img src="GRAPH.asp"
alt="problem"/><br/></p>
<do type="prev" label="prev">
<prev/> </do>
</card>
</wml>
якщо ви використовуЇте ≥м≥татор, необх≥дно ретельно протестувати стор≥нки на реальному телефон≥, тому що багато ≥м≥татор≥в погано п≥дтримують граф≥чн≥ файли. Ѕажано перев≥рити усе в реальних умовах − це Їдиний спос≥б застрахуватис¤ в≥д неприЇмностей.
ћова† WMLScript вносить процедурну лог≥ку в користувацьк≥ WML-стор≥нки. ÷¤ мова базуЇтьс¤ на специф≥кац≥њ ECMAScript, котра в свою чергу, Ї стандартом мови JavaScript. ћова WMLScript модиф≥кована таким чином, щоб забезпечити п≥дтримку низькоњ швидкост≥ передач≥ даних та УтонкиФ кл≥Їнт≥в. ¬икористанн¤ скриптовоњ мови та включенн¤ ≥њ в специф≥кац≥ю дозвол¤ють в≥дмовитис¤ в≥д реал≥зац≥њ багатьох функц≥њ на сервер≥ ≥, в≥дпов≥дно скоротити к≥льк≥сть звернень до сервера. ѕерерахуЇмо основн≥ сфери застосуванн¤ мови WMLScript в склад≥ WML-стор≥нок:
1. перев≥рка введених користувачем даних;
2. доступ до функц≥ональност≥ пристрою Ц забезпеченн¤ програмного виконанн¤ таких функц≥й, ¤к наб≥р номера, в≥дправка пов≥домленн¤, доданн¤ номера в телефону книгу тощо;
3. локальна генерац≥¤ пов≥домлень та д≥алогових панелей;
4. розширенн¤ функц≥ональност≥ програмного забезпеченн¤ пристрою та його параметр≥в;
ћова WMLScript п≥дтримуЇ основн≥ типи даних (Boolean, Integer, Floating-point, String, Invalid), стандартн≥ оголошенн¤ зм≥нних (ключове слово var), функц≥њ (ключове слово function) та ≥нш≥ загальн≥ структури типу вираз≥в if-then-else, цикл≥в for/while та вираз≥в break ≥ continue. —еред ≥нших характеристик мови в≥дм≥тимо можлив≥сть використанн¤† в≥дкомпельованих всередин≥ модул≥в (через прагму use url), контроль доступу (через прагму access), а також наб≥р стандартних б≥бл≥отек, описаних в специф≥кац≥њ мови. ƒо цих б≥бл≥отек в≥днос¤тьс¤ б≥бл≥отеки Lang, Float, String, WMLBrowser та Dialogs (див. "—тандартн≥ б≥бл≥отеки WMLScript"). —пециф≥кац≥¤ мови також визначаЇ ≥нтерпретатор байт коду, оск≥льки код на WMLScript комп≥люЇтьс¤ в б≥нарну форму (WAP-шлюзом) перед в≥дправкою до кл≥Їнта.
—пециф≥кац≥¤ мови WMLScript описуЇ ш≥сть стандартних б≥бл≥отек, функц≥њ котрих можуть бути використан≥ дл¤ вир≥шенн¤ р≥зноман≥тних задач, ¤к≥ часто зустр≥чаютьс¤.
Ѕ≥бл≥отека Lang Ц м≥стить наб≥р функц≥й, т≥сно повТ¤заних з ¤дром мови WMLScript. ¬ склад б≥бл≥отеки вход¤ть функц≥њ дл¤ ман≥пул¤ц≥њ типами даних, обчисленн¤ абсолютних значень та генерац≥њ випадкових чисел.
Ѕ≥бл≥отека Float Ц Ї опц≥ональною ≥ використовуЇтьс¤ т≥льки кл≥Їнтами, ¤к≥ мають розширенн¤ дл¤ п≥дтримки операц≥й з плаваючою точкою. —еред функц≥й включених в цю б≥бл≥отеку, в≥дм≥тимо функц≥њ† sqrt(), round() ≥ pow().
Ѕ≥бл≥отека String Ц м≥стить наб≥р функц≥й дл¤ виконанн¤ операц≥й з стр≥чками. ƒо таких в≥днос¤тьс¤: length(), charAt(), find(), replace() ≥ trim().
Ѕ≥бл≥отека URL Ц м≥стить функц≥њ дл¤ обробки абсолютних ≥ в≥дносних адрес. —еред функц≥й включених в цю б≥бл≥отеку сл≥д в≥дм≥тити getPath(), getRefer() ≥ getHost().
Ѕ≥бл≥отека WMLBrowser Ц м≥стить функц≥њ дл¤ реал≥зац≥њ користувацького ≥нтерфейсу. —еред функц≥й, включених в цю б≥бл≥отеку в≥дм≥тимо функц≥њ go(), prev(), next(), getCurrentCard() ≥ refresh().
Ѕ≥бл≥отека Dialogs Ц м≥стить функц≥њ дл¤ реал≥зац≥њ користувацького ≥нтерфейсу. ƒо них в≥днос¤тьс¤ функц≥њ† prompt(), confirm() ≥ alert().
WAP пристроњ обмежен≥ в своњх можливост¤х через невеликий обТЇм пам'¤т≥, маленьку швидк≥сть процесора, невелику швидк≥сть передач≥ даних т.д., однак дещо все-таки можна робити, знаючи про ц≥ обмеженн¤. ј технолог≥њ удосконалюютьс¤, ≥ з'¤вл¤ютьс¤ нов≥ пол≥пшен≥ р≥шенн¤.
Ј ƒодатки необх≥дно проектувати, виход¤чи з принципу Уколоди картФ. “ому що вона завантажуЇтьс¤ вс¤ в≥дразу, що зменшуЇ обм≥н даними ≥з сервером. Ѕудь-¤кий запит на ≥ншу колоду ≥н≥ц≥юЇ нове з'Їднанн¤ з сервером, що у свою чергу потребуЇ додаткового часу − так побудована WAP-технолог≥¤.
Ј „ерез малий розм≥р екрана особливу увагу потр≥бно прид≥лити читабельност≥ тексту. –озм≥р "стор≥нки" краще обмежити 4- 5-ма екранами.
Ј ƒл¤ зручноњ нав≥гац≥њ ≥ швидкого керуванн¤ доц≥льн≥ше використовувати теги select/option (виб≥р ≥з списку), н≥ж ¤к≥сь ≥нш≥.
Ј „ерез маленький об'Їм пам'¤т≥ бажано уникати використанн¤ великоњ к≥лькост≥ граф≥чних зображень, л≥пше всього взагал≥ не використовувати њх.
Ј Ќе потр≥бно в≥дкидати атрибут† alt дл¤ зображень (альтернативний текст дл¤ випадк≥в, коли браузер не п≥дтримуЇ граф≥чних зображень) − ¤кщо серед Internet-браузер≥в в≥дсутн≥сть такоњ п≥дтримки Ї архањзмом, то в WAP це розповсюджене ¤вище.
Ј WAP стандарти не ф≥ксують стандарт≥в по нав≥гац≥њ, типу back, forward ≥ home, ¤к це прийн¤то в Internet-браузерах. ѕроробленн¤ цих питань залишаЇтьс¤ на розсуд дизайнера.
Ќа даний час у пошуков≥й систем≥ Pinpoint.com, ¤ка призначена дл¤ ≥ндексуванн¤ сайт≥в з використанн¤м WML, уже б≥льш 1,5 м≥льйон≥в wap-стор≥нок.
Ќа сьогодн≥шн≥й день в ≤нтернет≥ можна знайти велику к≥льк≥сть р≥зноман≥тних редактор≥в WML-стор≥нок. ¬ даному розд≥лу ми розгл¤немо де¤к≥ з цих редактор≥в.
SantanaBuilder for WAP 1.0
ƒовол≥ непоганий WYSIWYG-редактор дл¤ створенн¤ WAP-сайт≥в (), розроблений компан≥Їю† Inetis Ltd. (http://inetis.com/). ƒозвол¤Ї працювати з наступними елементами:
Ј посиланн¤;
Ј форми;
Ј граф≥чн≥ зображенн¤;
Ј бази даних;
Ј скр≥пти;
Ј таймери;
Ј под≥њ.
ћал. 1.1 –едактор WML-стор≥нок SantanaBuilder for WAP 1.0.
ƒо переваг цього редактора можна в≥днести наступн≥ його можливост≥:
Ј автоматична конвертац≥¤ граф≥чних зображень з формат≥в gif, bmp, jpeg, ico в WBMP;
Ј SQL query builder;
Ј автоматична публ≥кац≥¤ WAP-сайта (по FTP); можлив≥сть попереднього перегл¤ду сайта.
WAPPage 2.1
ѕотужний редактор, розроблений компан≥Їю Zyglobe Inc. (http://www.zyglobe.com/). WAPPage представл¤Ї собою ц≥ле середовище розробки WAP-сайт≥в (). ¬≥н дозвол¤Ї редагувати, комп≥лювати та ≥нтегрувати WML-стор≥нки.
ѕрацюючи в цьому середовищ≥, користувач може створювати стор≥нки в режим≥ WYSIWYG або вручну, зм≥нюючи згенерований системою WML-код. р≥м цього, WAPPage надаЇ можлив≥сть перегл¤ду XML-дерева дл¤ створюваних карт та колод. “акож Ї можлив≥сть редагувати та публ≥кувати† ASP- ≥ JSP- стор≥нки в межах WAP-сайта. ¬ пакет поставки також входить емул¤тор дл¤ перегл¤ду й тестуванн¤ сайт≥в.
ћал. 1.2 –едактор WML-стор≥нок WAPPage 2.1.
WAPtor
WAPtorЦ довол≥ простий† WML-редактор дл¤ Windows, розроблений ф≥рмою† WAPtop (http://www.waptop.cz/, англомовний ресурс − http://www.waptop.net/). ћ≥стить вбудоване в≥кно попереднього перегл¤ду, п≥дсв≥тку синтаксису WML, передбачаЇ роботу з шаблонами. ƒозвол¤Ї в ≥нтерактивному режим≥ форматувати текст та вставл¤ти граф≥чн≥ зображенн¤. р≥м усього цього Ї передн≥й перегл¤д, але дуже дов≥р¤ти йому не потр≥бно, оск≥льки насправд≥ виконуЇтьс¤ рендер≥нг HTML, конвертованого з WML-карти, ≥ б≥льш≥сть помилок просто не в≥дображаЇтьс¤.
†
ћал. 1.3 –едактор WML-стор≥нок WAPtor.
Ќав≥що був придуманий WAP, ¤кщо Ї готовий ≤нтернет-протокол HTTP? Ќа жаль, сучасному р≥вню рад≥опослуг властива безл≥ч недол≥к≥в − дан≥ передаютьс¤ пов≥льно ≥ з великими паузами (нав≥ть текст HTML-стор≥нки буде завантажуватис¤ довго, не говор¤чи вже про граф≥ку чи роботу в захищеному режим≥), а сам телефон (трубка) волод≥Ї скромними обчислювальними ресурсами й обмеженою здатн≥стю до представленн¤ ≥нформац≥њ в м≥кробраузер≥ (наприклад, мон≥тор може складатис¤ усього з трьох текстових р¤дк≥в) ≥ до введенн¤ ц≥Їњ ≥нформац≥њ (наб≥р короткого слова може потребувати дек≥лькох хвилин).
WAP зн≥маЇ б≥льш≥сть цих проблем, додаючи, ут≥м, своњ. ÷ей протокол використовуЇ компактний дв≥йковий формат дл¤ передач≥ даних, ≥нтерпретований вбудованим у трубку ч≥пом, але вимагаЇ, щоб запитуваний ≤нтернет-ресурс був ц≥лком сформований† мовою WML (W≥reless Markup Language), створеною на основ≥ мови XML. ƒана мова трохи нагадуЇ HTML ≥ ор≥Їнтована на оптимальне представленн¤ контента на р≥зноман≥тних текстових ≥ граф≥чних м≥кромон≥торах, тому п≥дтримка малюнк≥в у н≥й м≥н≥мальна (т≥льки монохромн≥ зображенн¤). ≤снуЇ безл≥ч розходжень в ≥нтерпретац≥њ дв≥йкового WAP-коду телефонами р≥зних виробник≥в, тому нав≥ть маючи дв≥ однаков≥ модел≥ телефон≥в ≥з р≥зними програмними прошивками, можна одержати р≥зн≥ результати представленн¤ WML-контента на екран≥. ∆оден† телефон поки не п≥дтримуЇ вс≥ теги WML, а перев≥р¤ти спос≥б представленн¤ на вс≥х модел¤х телефон≥в ≥ п≥д ус≥ прошивки практично нереально. ” цьому план≥ розробка WML-контента сильно в≥др≥зн¤Їтьс¤ в≥д п≥дготовки HTML-контента, б≥льш-менш однаково в≥дображуваного дек≥лькома попул¤рними браузерами.
WAP-протокол був запропонований WAP ‘орумом, заснованим компан≥¤ми Motorola, Er≥csson, Nok≥a ≥ Phone.com. …ого перша верс≥¤ WAP 1.0 мала визначен≥ недол≥ки, ≥ в червн≥ 1999 р. ‘орум випустив стандарт WAP 1.1 (несум≥сний з колишн≥м) −† ¤к оф≥ц≥йно пов≥домл¤лос¤, з метою наблизити його до специф≥кац≥њ мови розм≥тки XHTML, запропонованого консорц≥умом W3C, а за неоф≥ц≥йною ≥нформац≥Їю − п≥д тиском Nok≥a, ¤ка намагалас¤ випередити конкурент≥в. ≤ д≥йсно, де¤к≥ модел≥ трубок S≥emens, що п≥дтримують верс≥ю WAP 1.0, не можуть працювати з WAP 1.1. WAP-протокол.