MIME类型
以下3种MIME类型可用于XHTML MP文档:
- application/vnd.wap.xhtml+xml
- application/xhtml+xml
- text/html
由开放移动联盟[OMA]为XHTML MP指定的MIME类型是"application/vnd.wap.xhtml+xml",这种MIME类型是一些WAP浏览器(例如,一些诺基亚的Series 60浏览器)需要的以正确显示XHTML MP文档。
另外一种选择是"application/xhtml+xml" MIME类型,它是为XHTML家族文档而建立的MIME类型。
"text/html" MIME类型也可能是一种选择,它是HTML文档的MIME类型。为XHTML MP文档使用 "text/html"的MIME类型的好处是可以使XHTML MP文档在普通的网页浏览器中查看,不会有问题。(一些网页浏览器比如IE6不能显示"application/vnd.wap.xhtml+xml" 或"application/xhtml+xml"的MIME类型,会跳出一个提示框让你选择用其他程序打开文件或者下载文件。)坏处是用户端代理不会把XHTML MP页面当作XML文档,这意味着即使标记代码不严格遵守XML规则,用户端代理也不会理会。
另外一种选择是可以让用户代理程序可以处理的MIME类型来动态选择MIME类型。例如,如果你的服务器发现你的某一个用户代理可以处理"application/vnd.wap.xhtml+xml"的MIME类型,那么服务器将会把所有的XHTML MP文档以"application/vnd.wap.xhtml+xml"发送给用户端代理。
要动态选择MIME类型,需要用服务器端脚本语言写一些代码(比如ASP,JSP,Perl,PHP),处理过程是:
- 获得收到的HTTP请求头的值,接受的头中包含客户端代理能处理的全部MIME类型。
- 如果接受的头的值中包含"application/vnd.wap.xhtml+xml",则设置XHTML MP的MIME类型为"application/vnd.wap.xhtml+xml",否则如果接受的头的值中包含"application/xhtml+xml",则设置XHTML MP的MIME类型为"application/xhtml+xml",否则设置XHTML MP的MIME类型为"text/html"。
下面的例子演示如何使用JSP写代码,如果你使用其他服务器端脚本语言,代码虽不同,不过写代码的思路是一样的。
<%
String acceptHeader = request.getHeader("accept");
String acceptHeader = request.getHeader("accept");
if (acceptHeader.indexOf("application/vnd.wap.xhtml+xml") != -1)
response.setContentType("application/vnd.wap.xhtml+xml");
else if (acceptHeader.indexOf("application/xhtml+xml") != -1)
response.setContentType("application/xhtml+xml");
else
response.setContentType("text/html");
%>
response.setContentType("application/vnd.wap.xhtml+xml");
else if (acceptHeader.indexOf("application/xhtml+xml") != -1)
response.setContentType("application/xhtml+xml");
else
response.setContentType("text/html");
%>
下面是上面的JSP代码的一些描述:
1.从HTTP请求中获得头accept的值,把它存在变量acceptHeader中。
String acceptHeader = request.getHeader("accept");
2.然后通过变量acceptHeader来比对是否包含"application/vnd.wap.xhtml+xml" 还是"application/xhtml+xml", indexOf(String str)来判断是否包含子字符串,如果没匹配字符串,则返回-1,如果找到匹配字符串,则返回值不会是-1。
if (acceptHeader.indexOf("application/vnd.wap.xhtml+xml") != -1)
...
else if (acceptHeader.indexOf("application/xhtml+xml") != -1)
...
...
else if (acceptHeader.indexOf("application/xhtml+xml") != -1)
...
3.response.setContentType(...);方法用来设置文档的MIME类型。
下面的例子说明在实际的XHTML MP文档中如何使用JSP代码来实现,你要做的非常简单,将代码复制粘贴到以".jsp"为扩展名的XHTML MP文档中。(在这个例子中的XHTML MP标记将在下面的章节讨论详细)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<? xml version = "1.0" ?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN"
< html xmlns = "http://www.w3.org/1999/xhtml" >
< head >
< title >XHTML MP Tutorial</ title >
</ head >
< body >
< p >Hello world. Welcome to our XHTML MP tutorial.</ p >
</ body >
</ html >
<%
String acceptHeader = request.getHeader("accept");
if (acceptHeader.indexOf("application/vnd.wap.xhtml+xml") != -1)
response.setContentType("application/vnd.wap.xhtml+xml");
else if (acceptHeader.indexOf("application/xhtml+xml") != -1)
response.setContentType("application/xhtml+xml");
else
response.setContentType("text/html");
%>
|
静态的XHTML MP文档扩展名通常是“.xhtml“,”.html“,和“.htm“。你可以使用你喜欢的其他文件扩展名,只要文件扩展名关联的MIME类型是在您的WAP服务器正确配置的。如果你使用服务器端脚本语言,比如ASP,JSP,PHP,Perl或者SSI动态加载XHTML MP的内容,那么扩展名使用服务器端脚本技术相应的文件扩展名。比如php脚本语言的文件扩展名一般是".php",SSI一般是".shtml"。