Mini-Tutorial WAP/WML


© Silvia Rothen, rothen ecotronics, Bern, Schweiz

Autorin: Dr. Silvia Rothen, rothen ecotronics, Bern, Schweiz
Letzte Überarbeitung: 13.05.18


Um WAP-Seiten für Handys und andere WAP-Geräte zu erstellen, braucht man die Tag-Sprache WML (Wireless markup language). WML hat gewisse Ähnlichkeit mit HTML, ist aber XML-konform. Weil WAP zur Zeit vor allem erfolgreich ist, wenn man mit möglichst wenig Eingaben die richtige Information zur richtigen Zeit geliefert bekommt, ist die dynamische Erzeugung von WAP-Seiten, z.B. mit ASP, fast ein Muss.
Das folgende Mini-Tutorial ist gedacht für Leute mit guten HTML-Kenntnissen. Der Teil zu ASP und WAP setzt ausserdem ASP-Kenntnisse voraus.


Inhaltsverzeichnis


Einleitung

WAP, der Webstandard für Handys, hat sich nicht als der grosse Trend herausgestellt, als den man es angekündigt hat. Zu klein ist das Displays eines Handys, zu kompliziert die Eingabe mit Handytastatur, zu gross waren die Erwartungen bezüglich Websurfen auf dem Handy. Doch allmählich sieht man doch ein paar WAP-Anwendungen, nicht Spektakuläres, aber Praktisches. WAP-Anwendungen dürfen sich nicht am Web orientieren, sondern an SMS. Knappe Textinformation zur richtigen Zeit am richtigen Ort ist bei den heute gängigen Übertragungsgeschwindigkeiten das einzig Sinnvolle. Anwendungen wie Fahrpläne, Veranstaltungskalender, Börsenkurse und vielleicht Quizspiele bieten Aussicht auf Erfolg.

Zurück zum Inhaltsverzeichnis


Vorgehen

Tools

WML-Seiten sind wie Webseiten reine Textdokumente, die mit jedem Editor erstellt werden können. Wie Webseiten bestehen sie aus Text sowie Auszeichnungstags in spitzen Klammern. Komfortabler als die Erstellung in einem Texteditor ist die Verwendung eines XML-Editors, z.B. XML Spy 4 von Altova. 

Die Einbindung auf einem Web Server wie dem IIS von Microsoft ist denkbar einfach (siehe unten). Man definiert einfach eine Handvoll neuer Mime-Types. Wer kein WAP-fähiges Handy zum Testen hat, kann dafür auch einen WAP-fähigen Browser wie z.B. Opera benutzen. Aber Achtung, nicht alles, was Opera anzeigt, funktioniert auf einem Handy. Und schon allein die winzige Displaygrösse der gängigen Handys führt des öfteren zu bösen Überraschungen

Grundstruktur der WML-Datei

Eine WML-Datei besteht aus folgenden Grundelementen:

Nimmt man nun alles zusammen, dann sieht eine ganz einfache Seite folgendermassen aus:

<?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="willkommen" title="rothen ecotronics">
    <p>Willkommen</p>
  </card>
</wml>


Wichtige Tags

Textformatierungen

Gerade bei den Textformatierungen ist die Verwandtschaft von HTML und WML offensichtlich. Sowohl die Tags für Abschnitte, d.h. <p>..</p>, wie Zeilenumbrüche, d.h. <br/>, und Textauszeichnungen stammen alle aus dem HTML. Unterschied ist nur, dass diese Tags XML-konform sein müssen, d.h. Tags z.B. immer geschlossen werden müssen. Für den Zeilenbruch ist deshalb nur <br/> gültig, nicht aber das alte <br>.

Bei den Textformatierungen gibt natürlich das gute alte Fett- und Kursivformatieren, d.h. <b>..</b> oder <i>..</i>, und daneben eine ganze Anzahl weiterer alter Bekannter, wie man auf der folgenden Seite sieht.

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"   
  "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
  <card>
    <p>
      <b>fett</b><br/>
      <i>kursiv</i><br/>
      <em>Hervorgehoben</em><br/>
      <strong>strong</strong><br/>
      <big>gross</big><br/>
      <small>klein</small><br/>
      <u>unterstrichen</u>
    </p>
  </card>
</wml>

Links

Auch wenn WAP im Vergleich mit richtigen Webapplikationen viele Abstriche machen muss, Links gibt es natürlich auch und zumindest eine Art funktioniert mit dem <a>-Tag genau so wie in HTML auch. Wie in HTML gibt es interne Links, die hier allerdings zum Springen zwischen Cards verwendet werden, und externe zum Springen zwischen verschiedenen Decks (Dateien). Bei den internen Links werden als Zieladressen statt Textmarken die IDs der Cards verwendet. Das sieht z.B. so aus:

<?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="eins" title="Interne Links 1">
    <p>
      <a href="#zwei">Weiter</a>
    </p>
  </card>
  <card id="zwei" title="Interne Links 2">
    <p>
      <a href="#eins">Zurueck</a>
    </p>
  </card>
</wml>

Soll stattdessen eine andere Datei (ein anderes Deck) angesprungen werden, dann sieht das wie in HTML aus, ebenso wie ein Link auf einem fremden Website:

<?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="eins" title="Externer Link">
    <p><a href="kalender.wml">Zum Kalender</a></p>
    <p> <a href="http://www.wap.ch">Fremder Website</a> </p>
  </card>
</wml>

Neben dieser aus HTML bekannten Art der Verlinkung gibt es in WAP eine weitere Möglichkeit, mit dem <anchor>-Tag Links zu erzeugen, die mit einem Task wie go verbunden sind.

<?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="eins" title="Externer Link">
    <p>
      <anchor>Zu internen Links
        <go href="internelinks.wml" />
      </anchor>

    </p>
  </card>
</wml>

Sehr interessant ist zudem die Möglichkeit, in WML einen automatischen Wechsel zwischen Cards durch einen Timer zu definieren. Der Wert von Timer wird dabei in Zehntelsekunden angegeben. Der Timer lässt sich übrigens in Opera nicht testen.

<?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="flip" title="Flip" ontimer="#flop">
    <timer value="50" />
    <p>Gleich geht es zu Flop</p>
  </card>
  <card id="flop" title="Flop" ontimer="#flip">
    <timer value="50" />
    <p>Gleich geht es zu Flip</p>
  </card>
</wml>

Cards, Decks und Templates

Da zumindest eine Sorte Links in WML genau gleich funktioniert wie in HTML, ist im ersten Moment nicht einzusehen, was die Einteilung eines Decks (einer Datei) in mehrere Cards eigentlich bringen soll. Decks werden wie Web-Seiten immer als ganzes auf das Handy übertragen

Ein Vorteil, Decks mit mehreren Cards zu benutzen, besteht darin, dass sich Templates definieren lassen, d.h. Elemente wie Vorwärts- und Zurück-Schaltflächen, die allen Cards eines Decks gemeinsam sind. Da diese Elemente dann auf absolut allen Cards vorhanden sind, d.h. die Vorwärts-Schaltfläche auch auf der ersten Seite, sind Templates nur bedingt nützlich. In dynamischen Applikationen lässt sich die Wiederverwendung bestimmter Elemente viel besser durch Include-Dateien erreichen.

Tabellen

In WML gibt es Tabellen und sie basieren auf denselben drei Tags - <table>, <tr>, <td> - wie in HTML auch. Allerdings gibt es ein paar kleine Unterschiede:

<?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="eins" title="Tabelle">
    <p>
      <table columns="2" align="LR">
        <tr>
          <td>
Artikelnr</td>
          <td>Preis</td>
        </tr>
        <tr>
          <td>
34847</td>
          <td>
12.50</td>
        </tr>
        <tr>
          <td>
84631</td>
          <td>
135.70</td>
        </tr>
      </table>
    </p>
  </card>
</wml>

Zurück zum Inhaltsverzeichnis


Einbindung in den Web Server

Damit ein Webserver WML-Dokumente an Handys liefert, muss er die entsprechenden MIME-Typen kennen. Beim IIS von Microsoft ist das keine grosse Sache: Man gibt die entsprechenden Typen ein. Dazu öffnet man die Administrationskonsole des Webservers, macht in der Baumstruktur einen Rechtsklick auf den Computer unterhalb von Internet-Informationsdienste und wählt Eigenschaften. Im Register Internet-Informationsdienste klickt man unterhalb von MIME-Zuordnungen auf die Schaltfläche Bearbeiten. Mit der Schaltfläche Neuer Typ fügt man dann der Reihe nach folgende Typen ein:

Zugeordnete Erweiterung Inhaltstyp (MIME):
.wml text/vnd.wap.wml
.wmls text/vnd.wap.wmlscript
.wbmp image/vnd.wap.wbmp
.wmlc application/vnd.wap.wmlc
.wmlsc application/vnd.wap.wmlscript

Da die MIME-Typen nicht für einzelne virtuelle Server gelten, sondern für den ganzen Webserver, muss man nachher den ganzen Webserver-Dienst neu starten.

Zurück zum Inhaltsverzeichnis


ASP und WAP/WML

Die Erstellung von dynamischen Webseiten in ASP ist denkbar einfach. Der zentrale Unterschied zu Webseiten ist, dass noch vor dem Header der WAP-Seite folgendes ASP-Statement stehen muss:

Response.ContentType = "text/vnd.wap.wml"

Die Seite selbst besteht dann natürlich aus WML- statt HTML-Tags, in die je nach Bedarf dynamische Elemente eingebunden werden. Am ASP-Code selbst ändert sich aber nichts. Der Code für eine ganz einfache Seite, die als dynamisches Element die aktuelle Uhrzeit auf dem Server liefert, sieht folgendermassen aus:

<%
Response.ContentType = "text/vnd.wap.wml"
%>
<?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="willkommen" title="rothen ecotronics">
    <p>Uhrzeit: <%=time()%></p>
  </card>
</wml>

Dynamische Seiten können wie normale Webseiten mit Parametern aufgerufen werden. Zu beachten ist dabei einzig, dass bei mehreren Parametern das Zeichen & zwischen zwei Parametern durch die WML-kompatible Form &amp; ersetzt werden muss. Ein Link auf eine dynamische WML-Seite mit zwei Parametern sieht dann so aus:

<p><a href="parameters?x=1&amp;y=2">Weiter</a></p>

Zurück zum Inhaltsverzeichnis


Ausblick, Links

Links zu WAP, WML, XML, ASP und zum Webdesign generell finden Sie in der Webdesign-Linkliste in der Unterkategorie "Programmiersprachen / Techniken".

Codebeispiele zur ASP-Programmierung finden Sie hier.



Diese Webseite wurde am 21.05.18 um 17:10 von rothen ecotronics erstellt oder überarbeitet.

Impressum

Zurück zu rothen ecotronics

Printed on 100% recycled electrons!