A WML card can be set up to use the timer function of WML. The time unit of the timer is 1/10 of a second.
The example below will display a message for 3 seconds, and then take you to the file "test.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 ontimer="test.wml">
<timer value="30"/> <p>Some Message</p> </card> </wml>
When a user switches from card to card in a deck, we need to store data in variables. WML variables are case sensitive.
Specify a Variable with the Setvar Command
When someone executes a task (like go, prev, and refresh), the setvar element can be used to set a variable with a specified value.
The following example will create a variable named i with a value of 500:
<setvar name="i" value="500"/>
The name and value attributes are required.
Specify a Variable through an Input Element
Variables can also be set through an input element (like input, select, option, etc.).
The following example will create a variable named schoolname:
<card id="card1"> <select name="schoolname"> <option value="HTML">HTML Tutorial</option> <option value="XML">XML Tutorial</option> </select> </card>
To use the variable we created in the example above:
<card id="card2"> <p>You selected: $(schoolname)</p> </card>
A WML deck with two cards - one for user input and one for displaying the result - can be set up, as demonstrated in this example:
<?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="card1" title="Tutorial"> <do type="accept" label="Answer"> <go href="#card2"/> </do> <p> <select name="name"> <option value="HTML">HTML Tutorial</option> <option value="XML">XML Tutorial</option> <option value="WAP">WAP Tutorial</option> </select> </p> </card> <card id="card2" title="Answer"> <p> You selected: $(name) </p> </card> </wml>
The first card might look like this in your mobile phone display:
The second card might look like this:
----- Answer ---------- You Selected: HTML
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
The first lines in the WML document are called the prolog. The prolog defines that this is an XML document, it then defines the XML version, and the DTD to be referenced.
<wml> ..... </wml>
The deck is the WML document itself. It is embedded within <wml> tags
<card> ..... </card>
Cards are always displayed one at the time. This WML deck contains two cards - one for user input and one for displaying the result.
The <do> element
<do> ... </do>
The first card has a <do> element that defines an event to be triggered. The type="accept" attribute of the <do> element causes the label="Answer" to be displayed in the lower left corner of the display.
The <go> element triggers when the user clicks the <do> label. The href="#card2" attribute of the <go> element causes card2 to be displayed on the screen.
Card2 displays the $(name) variable from card1, because variables are valid across cards.
Validating your WML
To help you validate your wml, we have used The Microsoft's XML parser to create a wml validator. Paste your wml in the text area, and validate it by pressing the validate button.
Validating your WML file
You can also validate your wml files, simply by typing the url of your wml file and press the submit button
If you want to validate an error free WML file you can paste this address into the name field: http://www.w3schools.com/wap/demo_helloworld.wml
NOTE: If you get an error message saying "Access denied" when accessing this file, it is because your Internet Explorer security setting do not allow access across domains.
Compiling WML Code
To test and compile your WML code, you can download the Nokia Mobile Internet Toolkit for free. The Nokia Mobile Internet Toolkit supports the complete WAP 2.0 specification, including XHTML and CSS.
If you place WML code on your IIS or Apache server, you don't need to compile it. This is a job for the WAP Gateway. Simply host your native WML code on your server.