WAP Überblick
WML Überblick
WML Sprache
WAP = Wireless Application Protocol.
Offene und globale Spezifikation um Benutzern Informationen und Dienstleistungen auf mobilen Endgeräten anbieten zu können.
WAP spezifiziert wie die Übertragung des Inhaltes auf die Endgeräte erfolgt.
Diese Endgeräte können Mobiltelefone, Organizer, Palmtops, Pager, Autoradios und Ahnliches sein.
WAP wird vom WAP Forum entwickelt
Organisation von 400+ Telekommunikationsunternehmen
Ziel: offener Standard für mobile Internet-Dienste zu schaffen, um eine weltweite Interoperabilität von drahtlosen Diensten sicherzustellen.
WAP ist nicht an einen bestimmten Mobilfunkstandard wie GSM oder UMTS gebunden, d.h. verschiedene Bearers werden unterstützt
großen Hersteller zur Unterstützung des WAP-Standards verpflichtet
WAP kooperiert mit dem W3C bei der Weiterentwicklung der Markupsprachen
Alternativen zu WAP:
Mobile IP und i-Mode
Eine Anfrage wird im WAP-Modell ist ähnlich einer im Web-Modell. Ein Anfrage könnte wie folgt aussehen:
Der Anwender gibt in seinem Handy die URL ein, oder wählt einen vorbereiteten Link.
Der WAP Client sendet über das WAP-Protokol eine Anfrage nach dieser URL an ein WAP Gateway.
Das WAP Gateway erzeugt eine normale HTTP Anfrage nach der gewünschten URL und sendet diese an den Web Server.
Die HTTP Anfrage wird von dem Web Server verarbeitet.
Die URL kann sich auf eine statische Seite beziehen
oder auf eine CGI oder sonstige Script Anwendung.
Der Web Server gibt den WML Deck mit dem hinzugefügten HTTP Header die von CGI oder der Script-Anwendung erzeugten WML Inhalt zurück.
Das WAP Gateway überprüft den HTTP Header und
den WML Inhalt und codiert diesen in einem WAP eigenen
Binärformat.
Anschließend kreiert das Gateway die WAP-Antwort mit
dem WMLX-Inhalt und schickt diese an den WAP-Client.
Der WAP-Client empfängt die WAP-Antwort und
verarbeitet den WML-Inhalt.
Der Inhalt der ersten Card des WML Decks wird
im Handydisplay angezeigt.
Um auf einem Web-Server WAP-Inhalte präsentieren zu können, müssen nur zwei Einstellungen vorgenommen werden:
text/vnd.wml
Dateiendung .wml
image/vnd.wbmp
Dateiendung .wbmp
User Agents sind vor allem Handys (Cell Phone) und PDAs (Personal Digital Assistant).
Da die Anzeigemöglichkeiten etwa auf Handys und PDAs sehr beschränkt sind gibt es hier einiges Grundlegendes zu beachten.
Eingeschränktes Display von nur 4-6 Zeilen mit je 10-20 Zeichen. Bei PDAs 30-50 Zeilen mit 40-60 Zeichen.
Einschränkungen bei der Verwendung von Graphiken.
So können grundsetzlich nur Bilder mit einer Farbtiefe von 1 Bit (schwarz-weiß) verwendet werden.
Die maximale Abmessung der darstellbaren Graphiken
ist von den verwendeten Endgeräten abhängig
Nokia 7110: 84 x 84 Pixel,
Palm III: 160 x 160 Pixel.
Eingeschränkte Eingabemöglichkeiten, zum Beispiel gibt es keine Maus.
Langsame CPU mit wenig Hauptspeicher.
Man sollte außerdem immer berücksichtigen, daß die Übertragungsraten zum Handy derzeit nur bei ca. 9600 Bit/sec (1200 Bytes/sec) liegen, was ebenfalls eine Verwendung von aufwendigen Graphiken wenig sinnvoll macht.
Latenzzeiten von 5-10 Sekunden, das ist die Zeit zwischen dem Beginn einer Anfrage und dem Eintreffen der Antwort.
Auf keinen Fall sollte man versuchen bestehende HTML-Seiten einfach in WML umzuwandeln. Sondern man sollte versuchen eine sinnvolle Informations-Reduzierung vorzunehmen. Erfahrungsberichte zeigen, daß dies der mit Abstand schwierigste und zeitaufwendigste Teil der Erstellung von WAP-Angeboten ist.
WML steht für Wireless Markup Language.
Es ist eine offene Sprache, mit einer XML DTD, in der einige Elemente von HTML mit neuen Elementen kombiniert werden.
Stand der Entwicklung
WML Version 1.0, 30. April 1998
WML Version 1.1, 16. Juni 1999
WML Version 1.2, 4. November 1999
WML Version 1.3, 19. Februar 2000
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card id="card1" title="Title"> <p> Ein einfacher WML-Deck!!! </p> </card> </wml>
Zeilenweise Erklärung:
Die erste Zeile gibt die verwendete XML Version an.
In der zweiten Zeile steht welche DTD verwendet wird.
In der dritten Zeile steht der für alle WML Dokumente obligatorische <wml> Tag.
In der vierten Zeile steht der Card Identifier, mit der eine Card eines Decks explizit angesprochen werden kann und ein Titel.
In der fünften Zeile wird ein ebenfalls obligatorisches Paragraph Element geöffnet.
In der sechsten Zeile steht der auszugebende Text
In der siebten Zeile wird das Paragraph Element geschlossen.
In der achten Zeile wird das Card Element geschlossen.
In der neunten Zeile wird das WML Element geschlossen.
Das Ergebnis:
Ansicht mit dem Nokia WAP-Toolkit 1.2
Das dargestellte Handy ist das Nokia 6150
Eine WML Datei muss sich als XML Anwendung mit DTD zu erkennen geben.
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
Da WML eine XML Anwendung ist gilt insbesondere:
die Elemente und Attribute sind case-sensitv
es werden meist keine Umlaute unterstützt,
obwohl WAP 1.1 das vorsieht
Start- und End-Tag wie für XML Anwendungen
Schachtelung der Elemente wie für XML Anwendungen
Aufbau und Verwendung der URLs wie bei HTML
Fragmentidentifier (#
), relative URLs
Die sonstigen syntaktischen Konstrukte in WML sind die, die in XML definiert werden.
Zur Erinnerung werden die Sprachelemente Entities, Tags, Elemente und Attribute im Folgenden kurz wiederholt.
Entities: Zur Strukturierung von Dokumenten werden in XML-basierten Sprachen Speicherungseinheiten verwendet, die so genannten Entities. Ein XML-Dokument kann aus einer Entity oder mehreren Entities bestehen. Über diese Speicherungseinheiten wird ein Dokument in mehrere voneinander unabhängig Teilkomponenten aufgespaltet, die einzeln bearbeitet werden können. In WML werden Entities insbesondere für die Spezifikation der Zeichen verwendet. So wird beispielsweise das Und-Zeichen (&) durch das Entity & repräsentiert. Entities beginnen immer mit dem Und-Zeichen und enden mit einem Strichpunkt.
Tags: Auch in HTML werden Tags in der gleichen Form benutzt. Ein Tag beschreibt ein Element und beinhaltet den Elementnamen und einen eindeutigen Identifier. Ein Tag kann zudem Attribute enthalten, die weitere Eigenschaften eines Elements spezifizieren. Auch bei WML gibt es Start-, End- und leere Tags.
Tags werden grundsätzlich klein geschrieben.
Elemente: Elemente spezifizieren Markierungen und Strukturinformationen eines WML-Decks. Sie weisen eine von zwei Strukturen auf:
Bei nicht-leeren Elementen wird die eigentliche Information von Anfangs- und End-Tag eingefasst. Leere Elemente wie beispielsweise <br/> für den Zeilenumbruch besitzen keinen Content. Elemente werden je nach Funktionalität in Kategorien eingeteilt. So unterscheidet man beispielsweise zwischen Textformatierungen und Event-basierten Elementen.
Attribute: Viele WML-Elemente können mit Attributen versehen werden, die zusätzliche Informationen für ein Element bestimmen. Attribute werden immer im Start-Tag eines Elements spezifiziert.
Attribut-Wert-Paare werden durch ein Leerzeichen
voneinander getrennt. Die Werte müssen in
Anführungszeichen gesetzt werden. Für den Attributnamen
st Kleinschreibung zwingend vorgeschrieben. Bei einigen Element ist
das zugehörige Attribut festgelegt. Beispielsweise verlangt
das Element go das Attribut href
.
Andere Attribute wiederum sind optional oder aber besitzen Standardwerte. Für das img-Element kann beispielsweise das Attribut align verwendet werden. Ist kein Attribut angegeben, so wird der Standardwert bottom verwendet.
Ein Beispiel mit 2 cards:
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card id="card1" title="Semia"> <p> Ein einfacher WML-Deck!!! <br /> <a href="#card2">2. card</a> </p> </card> <card id="card2" title="Semib"> <p> Noch eine WML-Card!!! <br /> <a href="#card1">1. card</a> </p> </card> </wml>
Das Ergebnis:
Ansicht mit dem Nokia WAP-Toolkit 1.2
WML unterscheidet sich von HTML in der Art und Weise, wie Inhalte
Strukturiert sind.
Während HTML seitenorientiert arbeitet,
werden WAP-Inhalte in so genannte Cards und Decks zerlegt.
Bei den Cards handelt es sich um die
grundlegenden Einheiten von WML.
Eine Card ist die Einheit, die auf dem Display
dargestellt wird, außerdem ist in ihnen die Interaktion
zwischen dem Browser und dem Benutzer definiert.
In Cards werden beispielsweise Auswahl- oder
Eingabefelder definiert.
Mehrere Cards werden zu einem Deck
zusammengefasst.
Decks sind somit die übergeordneten Elemente
einer WAP-Anwendung.
Ein Deck wird mit allen darin enthaltenen Cards
komplett an den Client übertragen.
Erreicht ein Deck den WAP-Client, so wird in der Regel die erste Card geöffnet - es sei denn, über den Client wird explizit eine andere Card angesprochen.
Neu gegenüber HTM sind Variablen, die in Elementen (in PCDATA) und Attributen (in VDATA) verwendet werden können. Syntax:
$identifier $(identifier ) $(identifier : conversion )
Das $ Escape-Zeichen ist wieder $. D.h. $$ steht für ein Text $. Mit conversion können Umlaute etc. in URLs kodiert werden.
Variablen können mit dem setvar
Element Werte
zugewiesen werden. Die Auswertung der Werte erfolgt auf dem UA.
<setvar name="varname" value="wert" />
wert darf natürlich selbst wieder Variablen enthalten.
Die wichtigsten WML Elemente werden im Folgenden besprochen.
White space Behandlung wie bei XML.
Hervorhebungen:
em, strong, big, small
i, b, u
wie in HTML
Paragraphen:
p, br
wie in HTML
Tabellen:
table, tr, td
wie in HTML
Bilder:
img
wie in HTML
Anchor:
a
wie in HTML
es gibt kein form
-Element
zur Gruppierung von Feldern und Text kann
fieldset
benutzt werden
zur Gruppierung von Optionen kann
optgroup
benutzt werden
Eingabefelder:
input
ähnlich wie HTML
neues Attribut format
definiert das
akzeptierte Eingabeformat
A, a, N, X, x, M, m, *f, nf, \c
neues Attribut emptyok
falls das
Feld leer sein darf
Auswahlfelder:
select
ähnlich wie HTML
Auswahloptionen:
option
ähnlich wie HTML
WML Root-Element wml
Content-Modell: head? template? card+
eine Anzeigeeinheit card
Content-Modell: onevent*, timer?, (do | p)*
Attribute: title, newcontext,
ontimer, onenterforward, onenterbackward
Mustereinheit template
Definition von Elementen, die in jeder
folgenden Card des Decks gelten
Kopfteil head
Content-Modell: access meta+
Zugriff access
<access domain="dom" path="p" >
Metadaten meta
wie in HTML
Reaktion auf Benutzereingabe do
Content-Modell: go | prev | noop | refresh
Attribute: type, label
Darstellung durch UA Widget (zB Handy Taste)
das type
Attribut steuert die
Bedeutung von do
Bejahung: accept
Zurück: prev
Hilfe: help
Zurücksetzen: reset
weitere Optionen: options
Löschen: delete
Leer: unknown
Experimentelle Anwendung: X-name
Herstellerspezifische Anwendung: VND.name
Timer Element:
timer
Attribut: value="sec/10"
Eingebaute Ereignisse
Timer Ablauf: ontimer
beim Eingang zur Card: onenterforward
beim Ausgang aus der Card: onenterbackward
beim Selektieren eines Elements: onpick
Binden von Elementen zu Ereignissen onevent
Navigation zu URL:
<go href="url" method="get|post">
Content-Modell: (postfield | setvar)*
ähnlich wie <form action="url">
in HTML.
für die Definition des Querystrings:
<postfield name="x" value="v" />
setzen einer Variable:
<setvar name="x" value="v" />
als Anchor verwenden:
<anchor>text <go href="url" /></anchor>
entspricht
<a href="url" >text</a>
Zurück: prev
Neu laden: refresh
Leer: noop
Die folgenden Beispiele lassen sich u.A. mit dem Opera Browser ansehen.
WBXML: WAP Binary XML Content Format
Komprimierte Übertragung der Daten zum Handy
WMLScript ähnlich wie JavaScript
WML 1.2 und 1.3
Server-Push: Events, die vom Server auf dem Client generiert werden können
WMLScript Crypto Library
CC/PP
Composite Capability / Preference Profile Framework
Kooperation WAPForum mit W3C
Erstellt unter Verwendung eines Seminarvortrags von Bertram Schmitt und der WML 1.1 Spezifikation.
© Universität Mannheim, Rechenzentrum, 1998-2002.
Heinz Kredel Last modified: Mon Oct 1 11:10:38 CEST 2001