Persönliche mobile Kommunikations-Endgeräte werden verwendet, die mit einer Bandbreiten-Informationsrate von mehr als 10 Mb/s arbeiten und die Multimedia-Dienstleistungen empfangen können.Diese These aus der Delphi-Studie 1998 wird nach Meinung der Befragten bis ca. 2005/2006 Realität werden.
Delphi'98
Bislang ist es bei XSLT beziehungsweise den
Transformationen (fast) immer um das Ergebnis HTML
gegangen. In diesem Kapitel soll es außerdem um ein anderes
Zielformat gehen: die Wireless Markup
Language (WML), in der Dokumente abgefaßt
sein müssen, die von einem Handy oder Personal Digital Assistant
(PDA) abgerufen werden können. Solche Daten kann
man auf einem normalen
Webserver wie dem Apache
bereithalten; er muss lediglich ein paar neue
MIME-Typen kennen, das heißt, die Datei
mime.types im Konfigurationsverzeichnis des Apache
muss die folgenden Zeilen beinhalten, damit der Server die
WML-Daten ausliefern kann:
text/vnd.wap.wml wml application/vnd.wap.wmlc wmlc text/vnd.wap.wmlscript wmls application/vnd.wap.wmlscriptc wmlsc
Das s in den Endungen steht für Scripts, das c für eine kompilierte Datei. Für den Apache bedeutet dies, dass er wie gewohnt die Daten über HTTP ausliefert; erst das WAP-Gateway nimmt den Protokollwechsel vor.
WML ist anders als HTML. Aber
es ist wie dessen Neudefinition (siehe Kapitel 19) eine XML-Anwendung. Das heißt
unter anderem, wer WML schreibt oder, wie in diesem
Fall, generiert, muss die üblichen XML-Vorgaben
beachten: ordentliches Schachteln et cetera. Wer nicht selbst
schreibt, sondern WML aus XML generiert,
muss sich darüber keine Gedanken machen, weil XSLT
und Tools wie XT und Saxon
falsches Schachteln anmahnen. WML-Dokumente haben
einen Dokumenttyp, dessen offizielle Definition auf dem Server
des WAP-Forums liegtMöglicherweise ändert
sich das irgendwann, denn das WAP-Forum und das
W3C arbeiten gemeinsam an einer neuen Version von
WML. Die Beteiligten beim W3C stellen
sich das WML der Zukunft als eine Teilmenge des
kürzlich verabschiedeten
XHTML vor..
Ausgangspunkt für die Beschäftigung mit WML
beziehungsweise WAP war die Tatsache, dass einer
der Autoren innerhalb der iX-Redaktion für die CeBIT
2000 eine WML-Demonstration vorbereitet hat, bei
der XML eine tragende Rolle spielte.An
dieser Stelle sei Jürgen Seeger, dem iX-Chefredakteur,
gedankt, weil er nicht nur die Genehmigung dazu gegeben hat, die
Quellen hier zu verwenden, sondern auch wesentlichen Anteil am
Fortschritt und Debugging des XSLT-Codes
hatte.
Natürlich sollte die CeBIT-Demonstration kein Selbstzweck sein, sondern eine tatsächliche Anwendungsmöglichkeit darstellen. Dazu sollten die Daten, die anlässlich eines kleinen Sonderheftes schon vorhanden waren, sowohl in HTML als auch in WML gewandelt online zur Verfügung stehen. Es handelte sich um eine Liste von Ausstellern zu bestimmten Themen, wie Application Server, Bluetooth oder Java, die man über das Web oder über das Handy leichter finden können sollte.
Basis für die Online-Dateien waren zwei Relationen in einer Datenbank: eine, in der die Firmen stehen, und eine, die die CeBIT-Daten beinhaltete. Man hätte sicherlich direkt aus dem DBMS über eine Reihe Reports HTML und WML erzeugen könen, aber wie dieses Kapitel zeigen wird, ist die Lösung, auf XML aufzubauen, variabler. Dies aus zwei Gründen: erstens, weil sich aus dem Zwischenformat XML viele Zielformate erzeugen lassen; und zweitens ermöglicht es ein Programm wie Saxon, beliebig viele Dateien über ein einziges Stylesheet zu generieren. Dementsprechend ging es zunächst darum, eine XML-Basisdatei zu generieren, aus der über XSLT unterschiedliche Sichten erzeugt werden sollten.
WML-Dateien dürfen nicht allzu groß sein, damit der Speicher eines Handys nicht überlastet wird. Es war also von vornherein darauf zu achten, die resultierenden Dateien möglichst klein zu halten. Wir gingen nach Gesprächen mit Experten davon aus, dass es auf keinen Fall mehr als 3000 Zeichen sein dürfen.
Jede WML-Einheit ist ein Deck (englisch für
einen Kartenstapel). Inkonsequenterweise heißt das
Top-Level-Element aber nicht deck, sondern
wml. Konsequenterweise heißen die einzelnen Karten
card. Innerhalb dieser ist eine HTML
nicht unähnliche Syntax vorgesehen, wie das Ergebnis der
Transformation zeigtVorgezogen ist das Listing an
dieser Stelle, weil wir das Stylesheet noch gar nicht behandelt
haben :-). Damit Sie einen Einblick bekommen, wie
solch eine WML-Datei aussieht, wollen wir Ihnen ein
Listing in dieser Auszeichnungssprache nicht länger
vorenthalten. Die hier wiedergegebene Datei wap4.wml
ist eine von circa 100, die mit dem später folgenden
XSLT-Stylesheet erzeugt wird:
<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml xmlns="http://www.wapforum.org/DTD/wml_1.1.xml"> <template> <do type="options" label="Top"> <go href="index.wml"/> </do> </template> <card id="wap1" title="WAP"> <p> <strong>Comma Soft AG</strong> <br/>Halle 4, Stand A61<br/>Produkt: helpLINE W@PDesk - WAP-Anbindung fuer CallCenter und Hotlines</p> <do type="accept" label="Next"> <go href="#wap2"/> </do> <do type="prev" label="Prev"> <go href="wap3.wml#wap5"/> </do> </card> <!-- hier fehlen drei weitere Firmen, wie sich an den Verweisen auf die nächste Firma nachvollziehen lässt --> <card id="wap5" title="WAP"> <p> <strong>Danet IS GmbH</strong> <br/>Halle 6, Stand C18, Mitaussteller bei Intershop<br/>Produkt: Distribution Nokia WAP-Server, WAP-Projekte</p> <do type="accept" label="Next"> <go href="wap5.wml"/> </do> <do type="prev" label="Prev"> <go href="#wap4"/> </do> </card> </wml>
Auffallend ist am Anfang der doppelte Eintrag des
System-Bezeichner für die DTD, einmal einleitend aber noch einmal als
Namensraumbezeichner im Top-Level-Element. Das war
Saxon leider nicht abzugewöhnen. Ebenfalls
auffallend (zumindest in Mitteleuropa), dass der Zeichensatz
nicht ISO-8859-1
ist. Das erwies sich insofern als
unproblematisch, weil nicht alle Handys mit solchen
encoding-Anweisungen etwas anzufangen wussten, sodass
es erforderlich war, in einer kleinen Nachbearbeitung Details
wie die Zeichensatzkodierung und den Namensraumbezeichner bei
WML herauszufischen. Aus demselben Grund (nicht alle
Handys sind gleich) war es auch nötig, auf Umlaute zu
verzichten.