A WAP megjelenése
Bizonyára még sokaknak ismerős az az időszak, még nem is olyan távoli múltból (10-15 éve lehetett csak ), mikor az ember mind az otthoni vezetékes telefonját, mind az akkor még a mostaniakhoz képest igen „kezdetleges” maroktelefonját nem használta egyébre, leginkább csak telefonálásra. Igaz voltak próbálkozások egyéb alkalmazásra, pl. internetezésre, mi több: eléggé elterjedt is volt akkoriban a „betárcsázás”, azonban az igazi áttörés csak később következett be mindkét készülékforma esetén .
A használható mobilos tartalmak viszonylag későn jelentek meg a webes tartalmakhoz képest. Ennek az igazi oka leginkább abban keresendő, hogy a hagyományos vezetékes vonalak mindig 1-2 lépéssel a mobiltelefonos adatátvitel előtt jártak sebességben. Igaz, voltak páran olyan elvetemültek, akik 9600bps sebességű modemként használták mobiltelefonjukat, de a vezetékes telefonoknál ekkor már régóta 56kbps volt az elérhető maximális sebesség (bár még mindkét technológia vonalkapcsolt módon működött). Többek közt ez is oka lehetett, hogy a WAP-on (Wireless Application Protocol-on) elérhető oldalakat leginkább kis méretre, és lassú adatátvitelhez optimalizálták. A WAP tulajdonképpen emiatt jött létre, kifejezetten mobilkészülékekre.
Nem feledkezhetünk meg arról sem, hogy mindennek bizony ára volt, nem kis ára. A számlázás eleinte másodpercekben történt (ügyes, gyors emberek előnyben ), azaz annyit fizettél, amennyi ideig be voltál a szolgáltatóhoz tárcsázva. 3 perc alatt olvastál el egy oldalt? 3 percet fizettél. Nos ez az akkori percdíjjak mellett (30Ft-150Ft) nem kevés kis összegbe került, nem csoda hát, hogy nem kaptak annyira rá az emberek .
Sebességben „nagyobb” változás először a GPRS (General Packet Radio Service ) technológia megjelenésekor - körülbelül 2000-2001 környékén- történt. Mint a nevéből is kitűnik, itt az adatátvitel már kis adatcsomagokban történt, hasonlóan az internetes adatkommunikációhoz. Bár nagyon látványos tartalombővülés nem volt észlelhető, de szépen sorjában azért elkezdtek megjelenni újabb, és újabb oldalak. Miközben egyre komplexebb fejlesztések eredményei váltak lassanként elérhetővé a WAP-on (élen jártak ebben a szolgáltatói portálok), a mobilkészülékekben megjelentek a teljes funkcionalitású HTML bőngészők is, bár ez még mind a mai napig csak középkategóriás és ennél magasabb árszintű telefonokban érhető el - jellemzően a kijelző felbontása szab gátat. A WAP nyelve a WML, ami a fent említett HTML erre a platformra átszabott változatának tekinthető, ez az, amit minden WAP-os készülék (még a legolcsóbbak is) meg tud jeleníteni.
Egy kicsit a WML-ről
No, ha már eddig eddig eljutottunk kezdjünk is bele a WML megismerésébe. A WML (Wireless Markup Language) egy szigorúan definiált XML alapú leíró nyelv. A szigorúan definiálton leginkább azt lehet érteni, hogy meglehetősen kötött, például. érzékeny a kis és nagybetűkre, illetve „ha valamit elkezdesz , fejezd is be” formátumú. Ez a gyakorlatban leginkább annyit tesz, hogy a kezdő és záró tag-nek minden esetben meg kell lennie, szintaktikailag helyesen, nem maradhat el.
A WML két legfontosabb alapegysége a card és a deck. A cardokon lehetnek hiperlinkek, képek, formázott szövegblokkok , kisebb programok. Számos cardot tartalmazhat egy deck. Mivel az összes cardot le kell hogy töltse a készülék, így bár a kártyák közti lépésekkel időt takaríthatunk meg, de ez hosszabb letöltési időt eredményezhet.
A WML nyelvet támogatja a Javascripthez igencsak hasonló WMLscript is. A WMLscript leginkább űrlapoknál használatos, változó átadásakor vagy egyszerű matematikai műveleteknél. Vannak azonban sokkal egyszerűbb és jobb eszközök is arra, hogy dinamikus tartalmat, űrlapokat kezeljünk WMLben. Ekkor azonban figyelnünk kell arra, hogy ezek a programok fussanak azon a szerveren ahol az oldal működik.
WML oldal készítése
Legelőször definiálnunk kell WML oldal elején, hogy milyen tartalomtípust(doctype) használunk. A deklarációnak betűhelyesnek, és a kis- és nagybetűhasználat vonatkozásában is pontosnak kell lennie. WML esetében így kell megadnunk:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
Mint látható, 1.0 –ás XML szintaktikát használunk, az oldalak karakterkódolása pedig utf-8 . Az encoding-ot aszerint változtathatjuk, hogy milyen dekódolást kívánunk használni. Készítsük el első WML oldalunkat. Az oldal a „Hello World” szöveget jeleníti meg.
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml>
<card id="card1" title="Hello world!">
<p>
Hello World!
</p>
</card>
</wml>
A doctype utáni rész maga a WML forráskód, <wml> és </wml> tagek közt. Bár a fenti példában nincs <head></head> rész, de hasonlóan a HTML-hez itt is használható META tag.
<head>
<meta name="keyword" content="WAP"/>
<meta http-equiv="cache-control" content="no-cache"/>
</head>
A cardokat <card> taggel kezdjük, itt kell megadnunk card nevét is. Több card esetén nem elég a a nevet megadni, kell egy id is, amivel tudunk rá hivatkozni . A cardok csak <p></p> és esemény (do, event) blokkokat tartalmazhatnak. A <p> blokkokban szövegeket, képeket , táblázatot, hivatkozásokat, a <do>, és <event> blokkokban pedig menüelemeket (eseményeket) definiálhatunk. A <p></p> blokkokat a HTMLből már jól ismert formázásokkal (<b></b>,<u></u>, <i></i>, <small> </small>) egyedivé tehetjük. <br/> alkalmazásával sortörés használható. A WML szemben az XHTML-MP-vel (egy későbbi cikkünkben erről is lesz bővebben szó) még nem tud stíluslapokat kezelni, CSS-el így nem kell foglalkozni. Egymásba ágyazással készíthető pl. vastag , dőlt betűs tartalom, arra viszont ügyelni kell, hogy a később nyitott taget kell előbb bezárnunk : <b><i>szöveg</i></b>
Több card használata
Általános használat esetén azonban kevésnek bizonyulhat egyetlenegy card használata. Ilyenkor több cardot használunk a WML-en belül, melyre hivatkoznunk is kell majd valamilyen módon. Definiáljuk a cardok id-ját, ezzel fogunk majd később hivatkozni rájuk.
Hivatkozást többféle módon használhatunk WML-ben. Használhatjuk az <anchor></anchor> taget, melynél a hivatkozást a <go> elemben adhatjuk meg, valahogy így:
<anchor>Ez egy link a 2. cardra <go href="#card2"/><anchor>
A kártyákra mindig az #id-val hivatkozunk, ahol az id az, amit card id-ként megadtunk a <card>-nál. Alkalmazhatjuk a HTML-nél megszokott <a href ></a> formulát is, de itt nem tudunk szimplán csak #card2-ként hivatkozni rá:
<anchor>Ez egy link a 2. cardra <a href="index.wml#card2"/><anchor>
A <go> tag egyébként nemcsak linkelést biztosít (cardra, vagy más wml oldalra ), hanem például kérdőív/form adatokat is át tudunk adni vele (get és post method).
<go href="index.wml" method="post">
<postfield name="v1" value="100">
<postfield name="v2" value="200">
</go>
A böngészőben elhelyezhetünk új menüpontokat is. Használhatunk olyan menüpontokat , amelyek az összes oldalon megjelennek, de kártyánként is definiálhatunk külön menüpontot. Ha több kártyára vonatkozik a menü, akkor <template></template> taget kell alkalmazni. Ezt a cardokon kívül, de még a </wml> zárás előtt meg kell tenni. A templaten belül <do>-val adható meg az esemény. A <do> -val lehet definiálni a menüpontot és az általa létrejövő eseményt ú. Különböző típusok állíthatók be, leggyakrabban használt típusai a prev(előző) ú, accept (ok, enter), a reset (alapértelmezettre állít), és az unknown. Ezt láthatjuk az alábbi példán:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<template>
<do type="prev" label="Vissza"><prev/></do>
</template>
<card title="1. oldal">
<do type="unknown" label="OK">
<go href="#card2"/>
</do>
<p>
Ez az elso oldal. Nyomd meg az OK-t a következo oldalra valo ugrashoz!
</p>
</card>
<card id="card2" title="2.oldal">
<p>
Ez a masodik oldal!
</p>
</card>
</wml>
A <do> és </do> tag-ek közé kerül a menü által létrejövő esemény. Az előzmény gomb esetében ez a <prev/>, de ezenkívűl létezik <accept/> , <reset/> ,<help> és a <accept/> és még pár másik típus is. A <do> elem a kártyán belül bárhol elhelyezhető, de böngészőtől függ, hogy hogyan jeleníti azt meg.
Űrlapok, átirányítások
HTML-hez hasonlóan WML-ben is tudunk űrlapokat létrehozni. Hagyományos értelemben vett formok nincsenek, de a beviteli mezők könnyedén elhelyezhetőek az oldalon . Ezeket az adatokat aztán post vagy get methódussal változóként átadjuk egy feldolgozó szerveroldali programnak. Post esetén a küldés a háttérben történik, ezzel szemben a getnél a küldött adat látható lesz az URL-ben.
<?xml version="1.0" encoding="iso-8859-2"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml>
<card id="email" title="Email Example">
<p>
<do type="accept">
<go href="feldolgoz.php" method="post">
<postfield name="Email" value="$email"/>
<postfield name="Uzenet" value="$uzenet"/>
<postfield name="Targy" value="$Targy"/>
</go>
</do> Cimzett:
<input title="Email" name="email"/> <br/>
Targy:
<input title="Targy" name="Targy"/> <br/>
Uzenet:
<input title="Uzenet" name="uzenet"/> <br/>
</p>
</card>
</wml>
Ebben a példában hagyományos input mezőket alkalmazunk, melyek értékét átadjuk feldolgozásra egy PHP fájlnak. Postfielddel küldjük el a változókat a feldolgoz.php-nak. Két paramétert adunk át, a name-t és a valuet, azaz a küldendő változó nevét és értékét. A hagyományos text input mezőkön kívül használhatunk még checkboxokat, listákat (optgroup), radiobuttont is bevitelre .
Igen hasznos dolog tud lenni az átirányítás bizonyos esetekben. Amennyiben mondjuk azt szeretnénk, hogy x idő múlva egy másik oldal töltődjön be, vagy ne mindig az első card legyen alapértelmezetten betöltve. Időzítés megadásakor a card nyitásakor kell megadni méghozzá oly módon, hogy az ontimer-nek megadjuk az oldal nevét, ahová az átirányítást végezzük. A kártyanyitás után, de még az első tartalom előtt be kell állítani az időintervallumot (századmásodpercben) is.
<card id="card1" title="Card1" ontimer="index.wml">
<timer value="100"/>
Átirányítást végezhetünk még onenterforward és onenterbackward használatával is. Előbbi akkor irányít át, ha a látogató nem a <prev/> menü választásával jutott az oldalra, utóbbi pedig akkor, ha <prev/>-menüvel. Ezáltal elérhető, hogy ne automatikusan az első card nyíljon meg, illetve az is, hogy a vissza gomb esetén megakadályozható legyen az oldal ismételt betöltése.
Képek és összegzés
Eleinte a WAP-os készülékek egyedül a wbmp-t támogatták. A WBMP egybites színhasználattal rendelkezik, ami a gyakorlatban annyit tesz, hogy a képpont vagy fekete, vagy üres, azaz nem jelenik meg. Többféle konvertáló program is létezett, létezik az elkészítésére. Időközben még a monokróm kijelzőjű készülékek is elkezdték támogatni a gif formátumú képeket, természetesen ez csak annyiból állt, hogy éles kontrasztú képeket viszonylag normálisan meg tudtak fekete- „fehérben” jeleníteni.
A WML fölött elszállt az idő. Ha azt számoljuk, mióta van jelen, talán nem is csoda, hogy egyre inkább feledésbe merül. Amiért létrejött (lassú adatátvitel, monokróm készülékek) az már a múlt homályába vész. Egyetlenegy esetben van még talán létjogosultsága, és ez a mobilszolgáltatói oldalak, ők ugyanis nem igazán tehetik meg, hogy ügyfeleik bármely csoportját is teljesen kizárják a saját tartalmaikból.
Szolgáltatói oldalak (Pannon, T-Mobile, Vodafone)
A WML nagyon hasonlít a HTML nyelvre is, így talán iskolákban első lépésként érdemes lenne ezzel kezdeni a tanulást, és folyamatosan áttérni HTML-re, XHTML-re. Hogy miért is mondom mindezt? A WML ad egyfajta szemléletet, egyfajta strukturáltságot pont a kötöttsége miatt, amely később is jól jöhet. Az ember rászokik ugyanis arra, hogy odafigyeljen a munkájára, hogy szép és helyes kódot alkosson.
tildy