Grunderna i WML
UppLYSning – 5 okt 1999
Staffan Malmgren
EHAND AB

Om EHAND AB
Gör information mobil
Teknikbaserat företag
I första hand produktföretag
10 anställda
Bor i centrala Stockholm
Söker folk!

WAP från 10 000 meter (1)

WAP från 10 000 meter (2)

WAP från 10 000 meter (3)

WAE – Wireless Application Environment
WML Microbrowser
WMLScript Virtual Machine
WMLScript Standard Library
Wireless Telephony Application Interface
WAP Content Types

Grunderna i WML
Bakgrund
Viktiga koncept
Taggar
WMLScript

Det här är WML

Bakgrund till WML
Plattformen
Kraven
Lösningarna
Utvecklandet

Varför ett nytt språk?
Begränsad bandbredd
Begränsad display
Begränsat gränssnitt
Begränsade resurser

Begränsad bandbredd
WML kompileras/komprimeras
Andra krav på scriptmöjligheter - användaren ska kunna göra mer mellan roundtrips till servern

Begränsad bandbredd

Begränsat gränssnitt
WML kan maximera telefonens/PDA’ns inmatningsmöjligheter
Begränsad display - WML är anpassat för små textbaserade UI

Begränsade resurser
WML är ett litet språk
WMLScript-motorn är liten
WMLScript Standard Library är litet

Huvudsakliga skillnader jämfört med HTML
"Kortlekskonceptet"
Mindre möjligheter att styra presentation
Scriptning viktigare
Mindre kontroll över gränssnitt

Kortlekskonceptet
("deck of cards")
<wml> - en kortlek, en överföring
<card> - ett kort, en skärmbild

Nya strukturer och taggar
Behåll tankesättet från HTML
Element ordnade i trädstruktur
Släng bort alla faktiska taggar
WML har ofta HTML-liknande taggar, men de skiljer sig

Hello World!

Hello World!

XML-deklaration

DTD-deklaration

WML-element ("kortleken")

Card

Event binding

Strukturella taggar
<wml>
Definerar en WML-kortlek
<card>
Definerar ett kort i kortleken
Ungefär som <BODY> i HTML

Eventhantering
WML och kortlekskonceptet bygger på eventhantering
Två typer av event
Vanliga, explicit orsakade av användaren
"Intrinsic", systemgenererade (byte av kort)
Event kan bindas på kort- eller kortleksnivå

<do>
Binder events till handlingar
Events kan vara fysiska knappar, softkeys, röstkommandon etc
Jfr eventhandlers i Javascript/HTML - onClick, onMouseOver etc

<onevent>
Binder systemgenererade events ("intrinsic events") till handlingar

Kortleksspecifika element
Innehåller information om kortleken som helhet
<head>
<access>
<meta>
<template>

<head>
Information om kortleken som helhet
<access>
Specifierar åtkomstkontroll för kortleken
Vilka andra kortlekar har behörighet till den här?
<meta>
Metainfomation om kortleken

<template>
Deklarerar en "mall" för kort i kortleken
Eventbindingar specade i mallen gäller för alla kort

Händelser
Navigerar genom kortleken och till andra kortlekar
Aktiveras av event bundna till händelsen

<go>
Navigerar till en URL
Kan vara inom kortleken eller till en ny kortlek

Andra händelser
<prev>
Navigerar till föregående URL i history-stacken
<refresh>
Updatera klientkontext enligt <setvar>-element
<noop>
Gör ingenting!
Överrider bindning på template-nivå

Variabler i WML
Variabler expanderas
Gör det möjligt att använda kort som "mallar"
Variabler kan sättas genom <setvar> eller genom WMLScript

<setvar>
Sätter en variabel till ett värde
x = 42;
x = y;

Kontrollelement
Element för att hantera användarinteraktion
Stora likheter med HTML forms
Anpassat för att kunna göra mer på klientsidan
<select>-listor kan vara förvalda med rätt värden enkelt
<input>-element kan validera input
<fieldset> grupperar kontrollelement

<select>, <option>
Låter användaren välja värden från en lista

<input>
Låter användaren mata in text
Många möjligheter att begränsa/validera den inmatade texten med format-attributet

<timer>
Osynligt element
Kan användas för samma ändamål som setTimeout i javascript
Ange timeoutvärde (i 1/10 sek) från card entry.
Genererar ett "intrinsic" ontimer-event

Anchor
<anchor>, Definerar “huvudet” av en länk
<a>, fungerar som <a> i HTML

Textformattering
Fonthanterande (character level)
<b>, <i> etc
Styckehanterande (block level)
<p>, <br>
Bilder
<img>

Fonthanterande taggar
Precis som i HTML:
<em>: Emphasis
<strong>: Strong emphasis
<b>: Fetstil
<i>: Kursivt
<u>: Understruket
<big>: Större text
<small>: Mindre text

Styckehanterande taggar
<p>
Allt textinnehåll måste finnas inom <p></p>
<br>
Tomt element - måste skrivas <br></br> eller <br/>
<table>, <tr>, <td>
Tabellhantering precis som i HTML

<img>
Visar bilder (WBMP-format, definerat i WAESpec)
Bilden kan inkluderas i kortleken (LOCALSRC-attributet) eller hämtas i ett separat anrop (SRC-attributet)

WMLScript
Nerbantad version av ECMAscript
Anpassat för krav på inbäddade scriptspråk i devices med liten datorkapacitet
Kompilerad bytekod förs över till terminalen

Använda WMLScript från WML
En enkel WMLScript-funktion

Använda WMLScript från WML
Anropande WML-kod

WMLScript vs ECMAScript
Variabelhantering
Inga globala variabler
Variabler måste deklareras
WMLScript måste inte implementera flyttal
flyttalsoperationer ska då returnera invalid

WMLScript vs ECMAScript
Objekt
WMLScript använder inte objekt
Biblioteket String motsvarar String-objektet
Liknande bibliotek finns för andra ECMAScript-object (Math etc)
Arrays
WMLScript använder inte arrays
Arrays kan "emuleras" genom Strings

WMLScript vs ECMAScript
Funktioner
Funktioner inte egna datatyper
Funktioner kan inte ha varierande argumentantal
Språkkonstruktioner
"For...in" och " with ..." stöds inte

WMLScript Standard Library
Istället för systemobjekt
Lang
Float
String
URL
WMLBrowser
Dialogs

WTAI - Wireless Telephony Application Interface
Ett gränssnitt mot telefonens funktionalitet
Kontrollera samtalsfunktioner
Skicka textmeddelanden
Hantera telefonboken
Diverse annat
Anropas genom URI:er /WMLScript
wtai://wp/mc;0709360355
WTAPublic.makeCall("0709360355")

Bortom WML och WAE
WAP-stacken
De olika protokollen
Kompilering av WML och WMLScript
WAP 1.2 och framåt

WAP-stacken

WAP-stacken
WDP – Datagram
WTLS - Säkerhet
WTP - Transaktion
WSP - Session

Varför en ny stack?

WDP – Wireless datagram Protocol
Direkt ovanpå GSM, CDMA, GPRS etc
Motsvarighet till IP
Interface neråt: -
Interface uppåt: Transport Service Access Point (T-SAP)

WTLS – Wireless Transport Layer Security
Erbjuder skydd, dataintegritet och autenticiering
Gjort för koppling- eller datagramorienterade protokoll
Baserat på TLS 1.0
Motsvarar SSL/TLS
Interface neråt: TSAP
Interface uppåt: Security Service Access Point (SEC-SAP)

WTP – Wireless Transaction Protocol
Garanterar transaktioner bestående av request/response
Meddelandeorienterat
Motsvararar: TCP
Interface neråt: SEC-SAP eller T-SAP
Interface uppåt: Session Service Access Point (S-SAP)

WSP – Wireless Session Protocol
Motsvarar: HTTP
Interface neråt: S-SAP eller T-SAP (!)
Interface uppåt: (A-SAP)

En WAP-gateways uppgifter

En WAP-gateways uppgifter
Protocol Gateway
Översätter WAP-protokoll till HTTP/TCP/IP
Content Encoder/Decoder
WML/WMLScript parsas och kodas/komprimeras innan det skickas över luften

Content Encoding
WML parsas och översätts till WBXML (WAP Binary XML)
Kompakt binärnotation för WML-kortlekar

Kodningsexempel

WMLScript Binary Encoding
WAP-gateway tokeniserar/kompilerar WMLScript
Jfr java-bytecode eller p-kod
Bytecode verifieras i WAP-browsern

WAP 1.2
Många 1.2-specar finns i draft-format
Push-arkitektur
User-agent profiles

Push-arkitektur i WAP 1.2

Push Proxy Gateway
Mellan internet och GSM/andra bärare, pss som WAP-gatewayn
Tar emot Push Access Protocol-information
Kompilerar/kodar push-information
Pushande part kan fråga PPG om klientens egenskaper
Broad- och multicast ej definerat

Push Access Protocol
XML-baserad information till/från pushande part (Initiator)
Operationer:
Push Submission (Initiator -> PPG)
Result Notification (PPG -> Inititator)
Push Cancellation (Initiator -> PPG)
Status Query (Initiator -> PPG)
Client Capabilities Query (Initiator -> PPG)
Tunnlas över HTTP/1.1 POST

Push Over-The-Air Protocol
Protokoll ovanpå WSP
Men WSP måste initieras från klienten...
En Session Initiation Application körs på klienten, som lyssnar efter session request från servern
Vid session request sätter klienten upp en WSP-session

User Agent Profiles
Ett sätt för klienten att tala om sina egenskaper för servern
Klienten/WAPGatewayn skickar en "Profile: http://nokia.com/7110"-header
På URLen finns en RDF-fil som beskriver klientens egenskaper

UAProf-graf

User Agent Profiles
TerminalHardware
TerminalSoftware
BrowserUA
NetworkCharacteristics
WapCharacteristics

Ännu längre fram
End-to-end security
Billing
Persistancy

Länkar
www.wapforum.org/what/technical.htm
updev.phone.com
forum.nokia.com/developers/wap/wap.html
mobileinternet.ericsson.se/emi/Default.asp
www.teraflops.com/wbmp
www.ehand.se
staffan@ehand.se

EHAND AB
http://www.ehand.se/
info@ehand.se
08-5560 9720
Nyhetsbrev: EHAND Mobile News