In most cases
emulators are not as strict as real WML browsers. This is especially true for those
emulators that do not use real gateways (Nokia SDK/Toolkit), or those that do not use
gateways at all (WinWAP, WapMAN).
A real WML browser can
only read the binary, tokenized form of WML, WMLC, and for the gateway to be able to
convert/compile the textual WML code into WMLC, the syntax has been made very strict. ASP
is designed for HTML browser, and HTML is nowhere near as strict as WML.
There is a slight
"bug" in ASP that makes it output whitespaces (such as spaces, carriage returns
and line feeds) in places where WML says there cannot be any. Note that some gateways fix
the problem by not passing the whitespaces through (CMG Gateway for instance).
The following is a couple of lines of ASP
code that usually starts the WML deck to send out MIME types etc:
<%Response.ContentType = "text/vnd.wap.wml"%>
<?xml version="1.0"?>
|
The problem with the code
above is that ASP will output the carriage return/linefeed between .wml "%>
and <?xml vers>. The two lines are after all separated by a
carriage return/linefeed. This will break the WML code because the absolute first
character in a WML deck must be the < that starts the line <?xml
version="1.0"?>. With the code above, the WML deck starts with
a carriage return/line feed.
The way to solve the problem is simply to
put the two lines on the same line of code, like this:
<%Response.ContentType = "text/vnd.wap.wml"%><?xml
version="1.0"?>
|
After the XML definition is correctly
formatted, WML is not that strict when it comes to whitespaces.
Also note that some
gateways have issues with content switching in ASP. Thus it is wiser to use Response.Write
to produce output, rather than using <%=MyVar%> in the middle of
your straight WML code. |