Wireless Markup Language (WML)


WAP Überblick

WAP und TCP/IP

Ablauf von WAP Verbindungen

WAP und HTTP

Eine Anfrage wird im WAP-Modell ist ähnlich einer im Web-Modell. Ein Anfrage könnte wie folgt aussehen:

  1. Der Anwender gibt in seinem Handy die URL ein, oder wählt einen vorbereiteten Link.

  2. Der WAP Client sendet über das WAP-Protokol eine Anfrage nach dieser URL an ein WAP Gateway.

  3. Das WAP Gateway erzeugt eine normale HTTP Anfrage nach der gewünschten URL und sendet diese an den Web Server.

  4. 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.

  5. 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.

  6. 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.

  7. 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

Ausstattung der UAs

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.

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 Übersicht

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

Kleines WML Beispiel

<?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:

  1. Die erste Zeile gibt die verwendete XML Version an.

  2. In der zweiten Zeile steht welche DTD verwendet wird.

  3. In der dritten Zeile steht der für alle WML Dokumente obligatorische <wml> Tag.

  4. In der vierten Zeile steht der Card Identifier, mit der eine Card eines Decks explizit angesprochen werden kann und ein Titel.

  5. In der fünften Zeile wird ein ebenfalls obligatorisches Paragraph Element geöffnet.

  6. In der sechsten Zeile steht der auszugebende Text

  7. In der siebten Zeile wird das Paragraph Element geschlossen.

  8. In der achten Zeile wird das Card Element geschlossen.

  9. In der neunten Zeile wird das WML Element geschlossen.

Das Ergebnis:

1/1 Deck

Ansicht mit dem Nokia WAP-Toolkit 1.2
Das dargestellte Handy ist das Nokia 6150

WML und XML

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 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.

Weiteres WML Beispiel

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:

1/2 Deck       2/2 Deck

Ansicht mit dem Nokia WAP-Toolkit 1.2


WML Sprache

Neue ELemente in WML

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.

WML Elemente und Attribute

Die wichtigsten WML Elemente werden im Folgenden besprochen.

Textformatierung

Bilder und Anchors

User input

Decks und Cards

Events

Tasks

WML Beispiele

Die folgenden Beispiele lassen sich u.A. mit dem Opera Browser ansehen.


Ausblick


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