11. 如何使用PHP来书写动态的WML页面?
PHP(和大多数其他服务端脚本语言一样)可以被用来书写动态的WML内容。只需要将输出的标记限制在WML微型浏览器可接受的范围内。
注意PHP有很多内建的HTML功能,特别是错误功能,这些功能WML微型浏览器可能无法识别。
PHP同样可以在一个HTML文件中编写出既适合于HTML,也适合于WML的内容。PHP的源代码对于客户端来说是不可见的。因此可以针对HTML浏览器输出HTML页面,针对WML浏览器输出WML页面。
可以在开发PHP编写的WML页面的时候把以下代码加在开头:
<?
// header("Content-type: text/vnd.wap.wml");
echo("<?xml version="1.0"?>
");
echo("<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
//"/n/n">http://www.wapforum.org/DTD/wml_1.1.xml">
");
?>
基于PC的浏览器将忽略这些无法理解的WML标记。但是如果想在WAP设备或者模拟器上测试的时候,只需要将"//"去掉,页面自动变成WML页面。
12. 使用PHP动态输出WML
这些例子生成一个非常有用的应用叫做:PizzaCalc。它将输入所有的pizza的帐单和人的数目,可以算出每个人的花费。
应用生成一个动态的页面叫做“calc”或者“input”。注意到所有的转义字符例如双引号。该页显示了一个简单的变量处理,和如何传递参数到另外的卡片:
使用WML浏览器就可以测试应用程序:
http://wap.colorline.no/wap-faq/apps/pizzacalc.html。
或者输入:
http://wap.colorline.no/demos.html选择应用。
<?
header("Content-type: text/vnd.wap.wml");
echo("<?xml version="1.0"?>
");
echo("<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"/n/n">http://www.wapforum.org/DTD/wml_1.1.xml">
");
echo("<!--The application PizzaCalc was originally made by The Crusaders
www.crusaders.no on the Commodore Amiga -->
");
echo("<!-- It was unfortunately not possible to emulate the crap interger handling of the
original program -->
");
?>
<wml>
<?
if($action == "calc") {
echo("<card id="result" title="PizzaCalc">
");
echo("<do type="prev" label="Back">
");
echo("<go href="pizzacalc.html#input"/>
");
echo("</do>
");
echo("<p>
");
echo("The cost per eater will be ".$total / $eaters."<br/>
");
}
else {
echo("<card id="input" title="PizzaCalc">
");
echo("<p>
");
echo("<anchor>Split Pizza bill
<go href="pizzacalc.html?total=$(total)&eaters=$(eaters)&action=calc"/>
</anchor>
");
echo("<br/>
");
echo("Total cost: <input type="text" name="total" format="*N"/>
");
echo("Eaters: <input type="text" name="eaters" format="*N"/>
");
}
?>
</p>
</card>
</wml>
13. 可以使用Java Servlet来生成WML页面吗?
当然。可以使用创建HTML同样的方法来创建WML。如果想书写一个CGI来创建WML,只要记住在页面的开头正确设置MIME类型:
response.setContentType("text/vnd.wap.wml");
14. 可以使用ASP、Perl等生成动态的应用吗?
是的。可以使用任何服务器端的脚本语言来生成WAP应用。
15. 如何使用ASP书写WML内容?
ASP(Active Server Pages)可以做到和PHP一样,也可以用来书写动态的WML。如果需要一些好的例子请参考Luca Passani"s WAP and ASP articles。或者查看Jean-Luc Praz"s (jeanluc@corobori.com)。更多的ASP例子在:http://www.corobori.com/wap/。
16. 在使用ASP动态输出WML页面的时候,已经设置了Content-type,但是浏览器返回的仍然是text/html,有什么问题吗?
如果在ASP脚本中有一个错误,那么诊断程序会发还一个HTML页面,请检查脚本。
17. 在使用ASP生成WML页面的时候出现了错误: <MIME type "text/html" is not supported>,会是什么问题?
这个问题是Web浏览器不知道WML的正确类型,修改ASP的第一行,加入:
<Response.ContentType = "text/vnd.wap.wml">
后就可以工作了。
18. 下面的代码有什么问题吗?
<%Response.ContentType = "text/vnd.WAP.WML"%>
<?xml version="1.0"?>
去掉<?xml version="1.0"?>之前的空格。XML解释器希望在这行中没有其他字符,甚至是空行。
此文章不能满足您的需求?那就就Google一下吧:)



