WAP (Wireless Application Protocol) 透過 WAP Gateway 將行動裝置請求轉為 HTTP 送達 Web Server,Server 端腳本 (PHP) 動態產出 WML (Wireless Markup Language) 回應。WML 基於 XML,**語法嚴格、必須 Well-formed**,任何標籤未閉合即導致渲染失敗。
Apache httpd.conf 或 .htaccess 加入:
AddType text/vnd.wap.wml .wml
AddType image/vnd.wap.wbmp .wbmp
AddType application/vnd.wap.wmlc .wmlc
AddType text/vnd.wap.wmlscript .wmls
AddType application/vnd.wap.wmlscriptc .wmlsc
Nginx mime.types 同理加入對應副檔名對應。
header('Content-Type: text/vnd.wap.wml; charset=utf-8');<?xml version="1.0" encoding="UTF-8"?> 及 <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "https://www.wapforum.org/DTD/wml_1.1.xml">。<wml> 根元素包含一或多張 <card> (畫面單元)。<?php
header('Content-Type: text/vnd.wap.wml; charset=utf-8');
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "https://www.wapforum.org/DTD/wml_1.1.xml">';
?>
<wml>
<card id="main" title="PHP WAP Demo">
<p>
當前時間:<?php echo date('Y-m-d H:i:s'); ?><br/>
<a href="menu.wml">進入主選單</a>
</p>
</card>
</wml>
| 標籤 | 用途 | 範例 |
|---|---|---|
<card> | 單一畫面卡片 | <card id="c1" title="標題">...</card> |
<p> | 段落 (卡片內容容器) | <p align="center">文字</p> |
<a href=""> | 超連結 (卡片間跳轉或外部 URL) | <a href="#c2">下一頁</a> |
<do> | 軟鍵綁定動作 | <do type="accept" label="確定"><go href="#next"/></do> |
<input> | 文字輸入框 | <input name="q" type="text" /> |
<select> | 選單 | <select><option value="1">項目</option></select> |
<img src="" alt=""> | WBMP 圖片 (僅支援 1-bit 黑白) | <img src="logo.wbmp" alt="Logo"/> |
1.5KB~3KB,超過需拆分多卡片或啟用 WMLC 編碼壓縮。convert a.png b.wbmp) 轉換。WAP/WML 已隨智慧型手機普及而成為歷史名詞,但其「嚴格 XML、輕量標記、閘道器轉換」的設計思想,深刻影響後來的 XHTML-MP、WAP 2.0 乃至現代 AMP、PWA 架構。維護舊系統時,上述規範仍具參考價值。