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/PDAns
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
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 |
|
|