Manual de WMLscript
Manual de WMLscript
de
WMLScript
IDENTIFICADORES .....................................................................................................................1
COMENTARIOS ..........................................................................................................................1
CARACTERES ESPECIALES..........................................................................................................1
P RIMEROS PASOS.......................................................................................................................2
VARIABLES EN WMLSCRIPT ......................................................................................................3
TIPO DE DATOS .........................................................................................................................4
VARIABLES GLOBALES ..............................................................................................................5
CARACTERES DE ESCAPE DEL URL..............................................................................................5
LIBRERÍAS ................................................................................................................................5
Librerias : LANG.................................................................................................................. 7
Funciones aritméticas:.........................................................................................................7
Funciones de conversión .....................................................................................................7
Funciones de entorno ..........................................................................................................8
Funciones de control de flujo ...............................................................................................9
Funciones de números aleatorios .........................................................................................9
Librerías : FLOAT.............................................................................................................. 10
Funciones de entorno ........................................................................................................10
Funciones aritméticas........................................................................................................10
Librerias : STRING............................................................................................................. 12
Funciones Básicas ............................................................................................................12
Funciones de Subcadenas (Substring).................................................................................12
Funciones de Elementos ....................................................................................................12
Funciones de Conversión ..................................................................................................12
LIBRERIAS : URL .............................................................................................................. 13
Funciones para manejar URLs...........................................................................................13
Funciones para extraer componentes..................................................................................13
Funciones para extraer contenido .......................................................................................14
LIBRERIAS : DIÁLOGOS ................................................................................................... 14
LIBRERIAS : WMLBROWSER............................................................................................. 15
Funciones de variables ......................................................................................................16
Funciones de Tareas .........................................................................................................16
Funciones Query ..............................................................................................................17
PALABRAS RESERVADAS..................................................................................................18
CARACTERES ESPECIALES................................................................................................18
Tutorial de WMLS Chilewap.cl
Tutorial de WMLS
Wml Script
El Wmls, igual que el Wml es case sensitive (que distingue mayúsculas de minúsculas).
Identificadores
Se utilizan identificadores para nombrar las variables, las funciones y los pragmas
(información para la unidad de compilación).
Estos identificadores tienen las siguientes reglas (las mismas que para nombrar las
variables en el Wml):
Case-sensitive
Sólo letras y/o números y/o el guión bajo "_"
No pueden comenzar con un número Y además, tiene una regla adicional: no pueden ser
iguales a una palabra reservada. Este concepto se verá mas adelante
Comentarios
Los comentarios en el WMLS, son como en el C o en el C++ (una sóla línea, empieza por //
y más de una línea empieza por /* y termina por */):
/* Comentarios de más
de una línea
*/
Caracteres Especiales
Si quieres escribir comillas (") barra (/) y otros caracteres más, tendrás que hacerlo de una
forma especial, porque en el wmls todos esos caracteres están reservados. Se veran mas
adelante
1
Tutorial de WMLS Chilewap.cl
Primeros Pasos
Vamos a hacer un sencillo Wmls que convertirá los pesos a dólares (suponiendo un valor
para el dólar de 500).
Primero necesitamos hacer el wml que recogerá la cifra que queremos pasar a dólares.
<?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="monedas" title="ChileWap, demo" newcontext="true">
<p>
Conversor de pesos. a dolares
</p>
<p>
<input type="text" name="cantidad" title="Cantidad:" format="*N"/>
</p>
<p>
<do type="accept">
<go href="pesos-dolares.wmls#calcular('$(cantidad)')"/>
</do>
</p>
<p>
Resultado: $(resultado)
</p>
</card>
</wml>
En esta carta hemos creado una variable que se llama cantidad y lleva la cifra que
queremos convertir a dólares.
Además hemos incluído una variable, que no tiene nada, llamada resultado. En esta
variable meteremos el resultado en el wmls siguiente:
WMLBrowser.setVar("resultado", dolarString);
WMLBrowser.refresh();
}
Las tres primeras líneas son de comentarios, no hace falta ponerlas. Explico línea por línea.
En esta función ya le decimos que tome la variable cantidad (desde donde haya sido
llamada). La función contiene las siguientes líneas que van entre corchetes { } :
Se declara una variable llamada dolar y se le asigna un valor, en este caso, lo que haya
introducido el usuario dividido entre 166 (el supuesto valor actual de la moneda americana).
Como el resultado puede ser tremendo en décimas, tenemos que hacer algo. Primero lo
convertimos a una cadena de texto, con String.toString. El resultado irá dentro de la
variable dolarString.
Y ahora la variable dolarString (que ya ha sido declarada, por lo que no necesita que se la
vuelva a declarar con "var"), se le da un formato adecuado para salir a escena.
%, seguido de un número indica el número de caracteres que tiene que imprimir en total. Si
sólo ponemos %, imprimirá todos los caracteres. El punto, indica el grado de precisión. En
este caso hemos puesto 2f, que quiere decir: "dos dígitos a la derecha del punto decimal".
Si hubiera puesto 3f, serían tres decimales y así.
WMLBrowser.setVar("resultado", dolarString);
Aquí se crea una variable de nombre resultado y cuyo valor es el contenido de dolarString y
además se envía a la carta desde la cual fue llamada esta función.
WMLBrowser.refresh();
Refresca el browser para que en la pantalla aparezcan los cambios (ahora la variable
"resultado" tiene un valor y tiene que aparecer en pantalla).
Variables en WMLScript
Las variables tienen que declararse (crearse) antes de poder utilizarlas en una expresión.
Esta es la forma de declarar una variable:
var NombreVariable;
var, seguido del nombre de la variable, que es "case sensitive", como todo el wmlscript y el
wml.
El nombre de la variable puede llevar caracteres alfabéticos, números y el guión bajo ("_"),
pero nunca puede empezar con un número.
3
Tutorial de WMLS Chilewap.cl
En la declaración de una variable puede asignársele un valor inicial. Hay dos formas
dehacerlo, con igual resultado:
var a;
a = 1;
var a = 1;
var a, b, c;
El valor de las variables en el WMLScript sólo duran lo que dura la función en la que son
declaradas. Por eso sólo se puede acceder a su valor dentro de la función donde han sido
declaradas.
Tipo de Datos
Integer (número entero positivo o negativo, sólo desde -2147483648 hasta el 2147483647)
El integer máximo y mínimo pueden conseguirse durante la ejecución del script con las
funciones de la librería Lang, así:
Lang.maxInt ()
Lang.minInt ()
Float.maxFloat ()
Float.minFloat ()
4
Tutorial de WMLS Chilewap.cl
Invalid (para distinguirlo de los otros tipos de datos o para saber por ejemplo cuándo el
resultado de una operación se sale de los máximos o los mínimos, etc.)
Variables Globales
Hay una forma de crear variables globales, esto es, variables que se almacenan en el
contexto del navegador y que pueden ser accedidas tanto por las cartas WML, como por las
funciones del WMLScript.
Estas variables hay que crearlas con la función setVar de la librería WMLBrowser, así:
; %3b / %2f
? %3f : %3a
@ %40 & %26
= %3d + %2b
$ %24 , %2c
space %20 { %7b
} %7d | %7c
\ 55c% ^ %5e
[ %5b ] %5d
` %27 < %3c
> %3e # %23
Librerías
String.toString
String.format
5
Tutorial de WMLS Chilewap.cl
WMLBrowser.setVar
WMLBrowser.refresh
El WmlScript tiene seis librerías con sus funciones, que nos permitirán hacer muchas cosas:
Vamos a ver una por una todas las librerías, con ejemplos claros.
6
Tutorial de WMLS Chilewap.cl
Librerias : LANG
Funciones aritméticas:
abs (número)
Devuelve el valor absoluto de un número. El tipo de dato seguirá siendo el mismo que el
número.
Devuelve el número que sea mayor de número1 y número2. El tipo de dato devuelto será el
mismo que el número seleccionado. Si los dos números son iguales, se seleccionará el
número1.
Devuelve el número que sea menor de número1 y número2. El tipo de dato devuelto será el
mismo que el número seleccionado. Si los números son iguales devolverá el número1.
Funciones de conversión
Permiten convertir cadenas de texto a números enteros y números con decimales y también
comprobar que la conversión ha sido un éxito.
isFloat (valor)
Devuelve true, false o invalid: True, cuando puede ser convertido el valor en un número
con decimales. En caso contrario, devuelve false. Si el sistema no soporta números con
decimales, devuelve "invalid".
isInt (valor)
7
Tutorial de WMLS Chilewap.cl
Devuelte true o false o invalid. True, cuando el valor puede ser convertido a un número
entero -usando parseInt-. En caso contrario, devuelve false.
Funciones de entorno
Con estas funciones puedes conocer las capacidades del dispositivo WAP en el que se
ejecuta el wmlscript.
characterSet()
Devuelve un número entero que es el valor asignado por el IANA (Internet Assigned
Numbers Authority) identificando el set de caracteres que soporta el intérprete del
WMLScript.
float()
Devuelve true si el dispositivo soporta los números con decimales; false, en caso contrario.
maxInt()
minInt()
Te permite terminar la ejecución del wmlscript y devolver el control al lugar desde donde fue
llamado (por ejemplo, otra función del mismo wmlscript).
Termina "bruscamente" la interpretación del bytecode del wmlscript y devuelve una cadena
de texto describiendo el error. A esta cadena de texto no se puede acceder desde un
documento WML.
exit (valor)
random(número entero)
Devuelve un número positivo aleatorio entre 0 y el número entero incluído entre paréntesis.
Devuelve "invalid" si el número entero que hemos incluído es menor que cero. 1
9
Tutorial de WMLS Chilewap.cl
Librerías : FLOAT
Funciones de entorno
Permite conocer los rangos válidos (máximo y mínimo) de los números decimales en el
dispositivo en el que se ejecuta el wmlscript.
maxFloat()
minFloat()
Funciones aritméticas
ceil(número)
Devuelve un número entero que esté cerca del número dado, pero que no sea menor que
él. Si el número ya es entero, devuelve el mismo número dado.
floor(número)
Es lo contrario de ceil. Devuelve un número entero que esté cerca del número dado, pero
que no sea mayor que él. Si el número ya es un número entero, devuelve ese mismo
número.
int(número)
round(número)
Hace la función de "redondeo". Devuelve el número entero más cercano al número dado. Si
dos enteros están igualmente cerca del número, round devuelve el mayor de ellos.
sqrt(número)
Devuelve la raíz cuadrada del número. Si el resultado es menor que cero sqrt devuelve
"invalid".
11
Tutorial de WMLS Chilewap.cl
Librerias : STRING
Hay que recordar que el wmlscript es case sensitive, por lo que las operaciones con
caracteres también son case sensitive.
Funciones Básicas
charAt(cadenadetexto, número)
compare(cadenadetexto1, cadenadetexto2)
lenght(cadenadetexto)
isEmpty(cadenadetexto)
squeeze(cadenadetexto)
trim(cadenadetexto)
Permite identificar y manipular una cadena de texto que es parte de una mayor. Los índices
de subcadena empiezan en cero.
subString(cadena, númeroDeCaracterParaComenzarnúmeroDeCaracteresDeLongitud)
find(cadena, subcadena)
replace(cadena, cadena1, cadena2)
Funciones de Elementos
Funciones de Conversión
format(formatString, valor)
toString(valor)
12
Tutorial de WMLS Chilewap.cl
LIBRERIAS : URL
La librería URL tiene funciones para manipular y verificar URLs relativos y absolutos. La
sintaxis de un URL (definido en detalle en [RFC2396]) es:
<scheme>://<host><:port>/<path>;<parameters>?<query>#<fragment>
Ejemplo:
http://www.wap.chilewap.cl:80/docs/faqs/index.htm;3;2?id=juan#nombre
Scheme: http
host: www. wap.chilewap.cl
port: 80
path: /docs/faqs/index.htm
parameters: 3;2
query: id=juan
fragment: nombre
Para las funciones que devuelven una cadena que contiene un componente de un URL, los
delimitadores de alante y de atrás no están incluídos en el resultado devuelto. La única
excepción es en el path (donde se incluyen las barras (/)).
escapeString(cadenadetexto)
getBase()
getReferer()
isValid(url)
resolve(baseString, incluidoString)
unescapeString(cadenadetexto)
getFragment(cadenadetexto)
getHost(cadenadetexto)
getPort(cadenadetexto)
getParameters(cadenadetexto)
getPath(cadenadetexto)
getScheme(cadenadetexto)
getQuery(cadenadetexto)
13
Tutorial de WMLS Chilewap.cl
Sólo hay una función para extraer contenido de un URL y es la que permite asignar el
contenido de un archivo de texto a una variable WMLScript.
loadString(URLString,contentTypeString)
LIBRERIAS : DIÁLOGOS
Los diálogos son mensajes que salen en la pantalla y que esperan una respuesta del
usuario.
Esta librería sólo tiene tres funciones. La forma en la que sale en pantalla dependerá de
cada micronavegador.
prompt(cadena,cadenaPorDefecto)
El texto que sale en pantalla es "cadena" y espera una respuesta por parte del usuario (un
input). El valor por defecto del input es cadenaPorDefecto. Devuelve la cadena que el
usuario ha introducido.
Ejemplo:
confirm(cadena,cadenaOK,cadenaCancelacion)
El texto que sale en pantalla es "cadena" y despliega dos opciones a elegir ("cadenaOK" y
"cadenaCancelacion") y espera una respuesta del usuario. La función confirm devuelve
true si el usuario ha seleccionado OK y false si ha seleccionado Cancel.
14
Tutorial de WMLS Chilewap.cl
Ejemplo:
var ok="Si";
var cancel="No";
var a = Dialogs.confirm("¿Eres usuario registrado?",ok,cancel);
alert(cadena)
Presenta una cadena de texto y espera la confirmación del usuario. Devuelve una cadena
vacía.
Ejemplo:
LIBRERIAS : WMLBROWSER
Las funciones de esta librería te permiten acceder a las variables en el contexto del
microbrowser del móvil. También te permiten ejecutar una tarea cuando el intérprete
wmlscript termina su ejecución.
15
Tutorial de WMLS Chilewap.cl
Funciones de variables
getVar(nombre)
Devuelve una cadena que contiene el valor de la variable "nombre" en el contexto del actual
microbrowser wml.
setVar(nombre, valor)
Devuelve invalid si "nombre" no contiene un nombre adecuado de variable (más aquí, sobre
formatos adecuados para los nombres de variables).
Funciones de Tareas
go(cadenaURL)
Indica al microbrowser que se cargue el url dado. El url se carga sólo cuando el intérprete
WMLScript devuelve el control al WMLBrowser. Tiene la misma semántica que el tag go
del wml.
prev()
Ejemplo: WMLBrowser.prev();
Indica al microbrowser que cargue la anterior carta almacenada en el historial del mismo.
16
Tutorial de WMLS Chilewap.cl
Tiene la misma semántica que el tag prev del wml. Si llama a una carta que no existe la
tarea se cancela. Esta función devuelve una cadena vacía.
refresh()
Ejemplo: WMLBrowser.refresh();
newContext()
Ejemplo: WMLBrowser.newContext();
Vacía el contexto del microbrowser y devuelve una cadena vacía. Esta función tiene el
mismo efecto que el atributo newcontext del wml.
Funciones Query
getCurrentCard()
Ejemplo:
www.chilewap.cl/demos/pro.wmls:
var a = getCurrentCard();
// a = "demos/a.wml"
Devuelve una cadena que contiene el URL más pequeño posible, relativo a la base de la
unidad de compilación actual, de la carta que actualmente se está procesando por el
microbrowser).
Devuelve un url absoluto si la baraja que contiene la carta actual tiene un url diferente que
la unidad de compilación.
17
Tutorial de WMLS Chilewap.cl
PALABRAS RESERVADAS
Estas son las palabras reservadas en el WMLS. No se puede escribir ningún identificador
que sea igual a cualquiera de estas palabras.
CARACTERES ESPECIALES
Forma Carácter
de escritura
\' Comilla simple
\\ Backslash (\)
\/ Slash (/)
\f Salto de página
\n Nueva línea
\r Retorno de carro
\t Tab horizontal
18