WMLScript
# WMLScript

WMLScript ist eine Skriptsprache, mit deren Hilfe sich ausführbare Scripte in WML-Seiten einbetten lassen. Sie ist größtenteils an JavaScript angelehnt, hat jedoch spezielle Elemente und Methoden, mit denen beispielsweise WML-Variablen ausgelesen und verändert werden können.
WMLScript ist auf die niedrige Bandbreite mobiler Systeme ausgelegt. So wird WMLScript nicht wie JavaScript verwendet, um attraktive Seiten zu gestalten, vielmehr wird es dazu verwendet, direkt auf dem Client eine Überprüfung der eingegebenen Daten vorzunehmen, was eine Fehlermeldung vom Server unnötig macht. Eine weitere Anwendung stellt das WTA-Protokoll (Wireless Telephony Applications) dar, mit dem Funktionen des Mobiltelefons – beispielsweise eine Nummer anrufen – angesprochen werden können. Die Funktionen dieses Protokolls werden mit WMLScript aufgerufen.

## Verarbeitung

WMLScripts werden (in der Regel) nicht vom mobilen Client geparst, da dies zu aufwändig für die eingeschränkte Hardware des Clients ist und außerdem das Übertragungsvolumen erhöht. Vielmehr kommt ein Gateway zum Einsatz, der das WML-Dokument und das dazugehörige Script vom Server entgegennimmt. Das Gateway kodiert die Daten in einen speziellen Bytecode, der die Übertragungsmenge reduzieren soll. Die kodierten Daten werden nun zum Client übertragen.
Umgekehrt nimmt das Gateway die Daten vom Client entgegen, dekodiert sie und schickt die unkodierten Daten zum Server.

## Aufbau

WMLScript-Teile werden entweder direkt innerhalb einer WML-Datei notiert oder in eine externe Datei ausgelagert. Der Aufruf einer WMLScript-Funktion kann aus dem WML-Teil erfolgen oder mit dateinamen.wml#funktion direkt angesprochen werden.
Die Syntax ähnelt der von JavaScript. Anweisungen müssen mit einem Semikolon beendet werden, mehrere Anweisungen können in einem Anweisungsblock (gekennzeichnet durch { und }) zusammengefasst werden. Variablen müssen (im Gegensatz zu JavaScript) zwar deklariert, nicht jedoch initialisiert werden. Nicht initialisierte Variablen enthalten eine leere Zeichenkette. Wie in JavaScript werden Variablen nicht typisiert.