MIME 类型
下面三个 MIME 类型可用于 XHTML MP 文档:
application/vnd.wap.xhtml+xml
application/xhtml+xml
text/html
开放移动联盟 (Open Mobile Alliance, OMA) 为 XHTML MP 文档指定的 MIME 类型为 "application/vnd.wap.xhtml+xml". 该 MIME 类型对于要正确显示 XHTML MP 文档的一些 WAP 浏览器 (比如, 一些诺基亚60系列浏览器) 来说是必须的.
另一个可选择的 MIME 类型是 "application/xhtml+xml". 该类型是 XHTML 系列文档的 MIME 类型.
"text/html" MIME 类型也是一个可用的选择. 它是 HTML 文档的 MIME 类型. XHTML MP 文档使用 "text/html" 有一个好处是你的 XHTML MP 页面在普通 Web 浏览器是显示也是没有任何问题的. (一些像 IE6 之类的 Web 浏览器并不能显示带有 "application/vnd.wap.xhtml+xml" 或 "application/xhtml+xml" MIME 类型的文档, 而是会弹出对话框让你用外部程序打开或找个地方保存文件.) 缺点是用户代理 (User Agent) 将不会把你的 XHTML MP 页面视为 XML 文档, 也就意味着即使标记代码没有严格遵守 XML 规则, 用户代理也不会抱怨什么.
动态选择 MIME 类型
另一个选项是探测某用户代理可处理的 MIME 类型从而动态地选择. 例如,
要想动态选择 MIME 类型, 你需要用服务器端语言 (如 PHP, ASP, JSP, Perl) 写几行代码. 伪代码如下:
下面的例子演示了怎样用 PHP 编写上述代码. 如果你用的服务器端技术不是 PHP, 代码将稍有不同, 但基本思想没有变化.
<?php
$acceptHeader = $_SERVER['HTTP_ACCEPT'];
if (false !== strpos($acceptHeader, 'application/vnd.wap.xhtml+xml'))
header('Content-type: application/vnd.wap.xhtml+xml');
else if (false !== strpos($acceptHeader, 'application/xhtml+xml'))
header('Content-type: application/xhtml+xml');
else
header('Content-type: text/html');
?>
这里是上述 PHP 代码的一些描述:
1. Accept Header 的值是从 HTTP 请求中获取的. 然后将其存放于 acceptHeader 中.
$acceptHeader = $_SERVER['HTTP_ACCEPT'];
2. 接下来, 检查变量 $acceptHeader, 看其是否包含关键字 "application/vnd.wap.xhtml+xml" 或 "application/xhtml+xml". 字符串函数 strpos(string $haystack, string $needle) 返回 $needle 第一次出现的位置. 如果没有找到 $needle, strpos(string $haystack, string $needle) 将返回 false. 也就是说, 如果找到 $needle 了的话, 返回值将不会是 false.
if (false !== strpos($acceptHeader, 'application/vnd.wap.xhtml+xml'))
...
else if (false !== strpos($acceptHeader, 'application/xhtml+xml'))
...
3. 方法
header('Content-type: ...');
用于设置文档的 MIME 类型.
下面的例子演示了如何在实际的 XHTML MP 文档中使用 PHP 代码. 你要做的非常简单 -- 复制 PHP 代码并粘贴到 XHTML MP 文档中 并用 ".php" 作为文件扩展名. (我们将在后面的章节中作深入讨论此例中的 XHTML MP 标记.)
(hello_world.php)
<?php
$acceptHeader = $_SERVER['HTTP_ACCEPT'];
if (false !== strpos($acceptHeader, 'application/vnd.wap.xhtml+xml'))
header('Content-type: application/vnd.wap.xhtml+xml');
else if (false !== strpos($acceptHeader, 'application/xhtml+xml'))
header('Content-type: application/xhtml+xml');
else
header('Content-type: text/html');
?>
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN"
"http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>XHTML MP 教程</title>
</head>
<body>
<p>大家好. 欢迎大家来学习 XHTML MP 教程.</p>
</body>
</html>
文件扩展
静态 XHTML MP 文档的典型扩展名为 ".xhtml", ".html" and ".htm". 只要在 WAP 服务器的配置文件里正确设置了和文件扩展相关联的 MIME 类型, 你就可以使用你喜欢的其它文件扩展. 如果你要用 ASP, JSP, Perl, PHP 或 SSI (服务器端包含) 之类的服务器端语言往 XHTML MP 文档中动态添加内容, 你或许要将你的 XHTML MP 文档的文件扩展修改为服务器端所用的技术. 例如, PHP 所用的典型扩展为 ".php", 而 SSI 所用的典型扩展为 ".shtml".





