El Wireless Markup Language es un lenguaje cuyo origen es el XML (eXtensible Markup Language). Este lenguaje se utiliza para construir las páginas que aparecen en las pantallas de los teléfonos móviles y los asistentes personales digitales (PDA) dotados de tecnología WAP. Es una versión reducida del lenguaje HTML que facilita la conexión a Internet de dichos dispositivos y que además permite la visualización de páginas web en dispositivos inalámbricos que incluyan la tecnología WAP. La visualización de la página dependerá del dispositivo que se use y de la forma en que este interprete el código, ya que varían entre sí. WML es un metalenguaje, lo que implica que además de usar etiquetas predefinidas se pueden crear componentes propios y tiene ciertas similitudes con otro lenguaje de etiquetas bastante conocido, el HTML (Hypertext Markup Language), utilizado para la creación de páginas web convencionales.
Un consorcio formado por Nokia, Phone.com, Motorola y Ericsson, el WAP Forum, define la sintaxis, variables y elementos utilizados en WML. Algunos fabricantes han desarrollado capacidades adicionales a este estándar.
Al igual que el HTML se sirve de un lenguaje de script como javascript para dotar de cierto dinamismo a sus documentos, WML dispone del WMLS que es un lenguaje bastante similar al Javascript, pero con alguna diferencia fundamental.
Ahora existen entornos de desarrollo especializados para la creación de páginas con formato WML, pero, como en la mayoría de lenguajes, es posible editarlas directamente para tener un control total sobre el código WML que se está ofreciendo. Lo primero que debemos hacer para crear un archivo con extensión .wml es establecer una serie de etiquetas comunes a toda página WML.
La información en WML se distribuye en forma de barajas (decks) compuestas por cartas (cards), tomándose cada fichero WML como una baraja. Las cartas tienen un nombre para poder referirse a ellas, y permitir la navegación entre ellas dentro de una misma baraja.
En una página se pueden encontrar diversos elementos como son imágenes, tablas, formularios o tareas.
Ejemplo de una página WML:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//PHONE.COM//DTD WML 1.1//EN"
"http://www.pagina.com" >
<wml>
<card id="carta1" title="Carta">
<p mode="wrap">Un ejemplo para entrar a página.</p>
</card>
</wml>
Otro ejemplo de página WML:
<wml>
<body bgcolor="CELESTE">
<center><h1>NAVEGACION ENTRE REGISTROS</h1></center><br />
<br />
<br />
<card id="index" title="index">
<form action="productos.php" method="post">
Ingrese ruc a consultar:
<input type="text" name="valor">
<input type="submit" value="Ingresar">
</form>
</card>
<body>
</wml>
A diferencia del HTML, WML es más estricto, si existe un error en la escritura de las etiquetas presentará un error en vez de mostrar la página; al provenir del XML requiere que las etiquetas como <br /> (que sirven para empezar una nueva línea) finalicen con />, mientras que en HTML puede finalizar en > sin generar error.
WML permite el uso de variables en sus etiquetas, algo que no es posible en HTML, esta función es útil ya que el valor de las variables se puede mantener entre cartas.
En WML las imágenes utilizan el formato wbmp, cada imagen wbmp es estática, sin embargo WML permite crear una secuencia de imágenes, de esta manera pueden verse en movimiento, las etiquetas que definen una carta pueden tener un evento activado por un contador (ontimer) el cual saltará a la carta indicada luego de un tiempo definido dentro de la etiqueta así: <timer value="5"/>, de esta manera, si cada carta posee una imagen, se puede crear la sensación de movimiento.
WML utiliza tablas simples, algunos atributos existentes en HTML no existen en WML, tampoco existe la posibilidad de crear tablas dentro de tablas.
Así como HTML utiliza Javascript para crear acciones especiales sobre sus páginas, WML utiliza WMLScript que es muy similar a Javascript pero más simple. Los guiones generados con este lenguaje se deben ubicar en archivos diferentes al archivo WML que los invoca, pues no pueden estar embebidos dentro del código WML.