Proceed to WirelessDevNet Home Page
Publications, e-books, and more! Community Tutorials Store Downloads, tools, & Freebies! IT Career Center News Home

EMail Address:

  - Articles
  - Columns
  - Training
  - Library
  - Glossary
   Career Center
  - Career Center Home
  - View Jobs
  - Post A Job
  - Resumes/CVs
  - Resource Center
  - Marketplace Home
  - Software Products
  - Wireless Market Data
  - Technical Books
  - Daily News
  - Submit News
  - Events Calendar
  - Unsubscribe
  - Delivery Options
  - Discussion Boards
  - Mailing List
  - Mailing List Archives
   About Us
  - About WirelessDevNet
  - Wireless Source Disks
  - Partners
  - About MindSites Group
  - Advertising Information

Ask The Expert

January 2001

Topics: WAP, WML, and WMLScript

by Wei Meng Lee

About Our Expert
Previous Ask The Expert Columns

How do you create a single index file that generates both WML and HTML?

Several readers wrote in with this interesting question. Well, what I normally do is to create a server-side script (for instance, using ASP) and name it, say, index.asp. The content of my index.asp file would look like this:

<% if InStr(Request.ServerVariables("HTTP_ACCEPT"), "wml") then Response.Redirect("index.wml") else Response.Redirect("index.html") end if %>

The MIME types that are acceptable to the device are stored in the environment variable HTTP_ACCEPT.

Of course, I am making a simplification here. I am assuming that all WAP devices send the MIME type strings containing the keyword "wml". Such strings are "text/vnd..wap.wml", "text/vnd.wap.wmlscript" and "text/vnd..wap.wmlc". However, do be aware that some devices, most notably, the Microsoft Mobile Explorer (MME), accepts both WML and HTML documents and as such may send multiple MIME type strings indicating the ability to accept both WML and HTML content.

How can you identify the user's browser?

As the answer to the previous question shows, you can detect the kind of browser your user is using by checking the environment variable HTTP_ACCEPT. However, this is not sufficient as different devices may exhibit different behaviors. As such, to further customize your application, you might want to probe the kind of microbrowser the device is using. Fortunately, every device will send a string containing the user agent type to the web server. To retrieve this string, simply check the HTTP_USER_AGENT environment variable:

<xmp> <% if InStr(Request.ServerVariables("HTTP_USER_AGENT"), "Ericsson")then '--- Loads the Ericsson-specific WML deck --- Response.Redirect("Ericsson.wml") else if InStr(Request.ServerVariables("HTTP_USER_AGENT"), "Nokia")then '--- Loads the Nokia-specific WML deck --- Response.Redirect("Nokia.wml") else '--- Loads the default generic UP WML deck --- Response.Redirect("UP.wml") end if end if %>

To display the user agent string for the various devices, you can use the following WML deck:

<xmp> <% Response.ContentType="text/vnd.wap.wml" %> <?xml version='1.0'?> <wml> <card id="card1" title="Agent"> <p> <% =Request.ServerVariables("HTTP_USER_AGENT") %> </p> </card> </wml>

Developing Dynamic WAP applications

It is quite unlikely that you will be displaying content that is static in nature on a WAP device. After all, users use their WAP device to retrieve time-sensitive information like stock quotes and weather information. As such, using WML and WMLScript alone is not sufficient to develop compelling application for the mobile markets. You should familiarize yourself with a server-side technology. Some of the current server-side technologies are:

  • Microsoft Active Server Pages (ASP)
  • Java Server Pages (JSP)
  • PHP
  • Java Servlets
  • Common Gateway Interfaces (CGI) using Perl, etc.
  • Coldfusion

It is important to know that developing a WAP application is somewhat similar to developing a Web application, except that you are working within a much-constrained environment.

WAP-Enabling Your Site

While there are WAP gateways (for example, the Nokia WAP Server) that are capable of converting your HTML pages into WML decks, this technology is still pretty much in its infancy stage. A direct HTML to WML conversion often results in a clumsy user interface on the WAP device. In any case, usability issues on the Web and WAP environments are totally distinct. It is thus difficult to transform an HTML page that is designed to be displayed on a web browser to be displayed on a WAP device without some loss of usability.

The best advice you could get when you are designing a new WAP site is to take into consideration the target browsers that you are planning to support. A good choice to markup the content of your web site is to use XML. And then based on the target device, use XSLT to transform the XML content into either HTML or WML. If you already have a web site coded in HTML, consider converting them into XHTML. XHTML is a version of HTML that is XML-compliant. Once that is achieved, you can use XSLT to perform the required transformation. Of course, it is always easier said than done. But I see XML as the future for coding your web site.

For more information on XSLT and XML, visit this article that I wrote for

About Our Expert: Wei Meng LEE is the co-author of the upcoming book Beginning WAP: WML and WMLScript (ISBN: 1-861004-58-3), to be published by Wrox Press. This book will be available in December, 2000. He can be reached via email at



Eliminate irrelevant hits with our industry-specific search engine!

Wireless Developer Network - A MindSites Group Trade Community
Copyright© 2000-2010 MindSites Group / Privacy Policy
Send Comments to: