WAP2.0(XHTML MP)基礎介紹
(一)XHTML MP 介紹
XHTML MP(eXtensible HyperText Markup Language Mobile Profile)
WAP2.0與WCSS(WAP CSS /WAP Cascading Style Sheet)配套使用,是XHTML的子集。
XHTML Basic (XHTML子集)+另外的一些XHTML的元素和屬性
WAP浏覽器與網際網路之間以前WAP網站(WML and WMLScript )更多的展示表現(presentation control )
XHTML MP 優勢:開發的站點可以在WEB和無線上都可以使用,也可以用任何Web浏覽器通路WAP2.0應用
向後相容:XHTML MP / WCSS 和 WML / WMLScript
(二)無線标記語言發展
HTML:WAP發展的首要任務——行動電話,PDA等通路網際網路。WAP standard (WML and XHTML Mobile Profile) 類似HTML
WML(Wireless Markup Language) 1.x:WAP 1.x 規範中規定的标記語言,無線裝置的第一個标記語言。Openwave、Nokia 和 Ericsson 很早都有自己的标記語言。WML規範是WAP Forum(97)建立的。而現在,很多的WAP站點依然使用的是WML。
XHTML:結構比HTML更簡潔和嚴格。這對于無線裝置(例:行動電話)很重要,對于有限的處理能力。
XHTML Basic :是XHTML的一個簡化版本。為處理能力和性能有限的裝置設計的(行動電話,PDA,呼機等)
但是不包含XHTML特性。例如CSS,frames和Scripting。是由W3C定義的。
XHTML MP: 在WAP2.0說明中指定的官方标記語言。WAP Forum 基于 XHTML Basic創造,并從XHTML的完整版本中增加了一些元素和屬性。例如<i>,<b>,<small>,<big>和<hr>。XHTML MP支援一個簡單的CSS版本,即WCSS/WAP CSS。
WCSS/WAP CSS: CSS2的一個簡化版本,增加了WAP特有的擴充。可以很簡單的改變XHTML MP頁面的布局和風格。
WML2.0: WAP站點開發者不需要顧慮WML2.0。WML2.0向後相容,并且對于WAP站點開發者還不可用。
(三)XHTML MP的優點
最大優點:開發者可用相同的技術開發适用于WEB和WAP的站點。
有HTML、XHTML、CSS基礎即可入門。
同樣的開發工具可以用來開發WEB和WAP站點。
開發過程中一般的WEB浏覽器可以浏覽你的WAP站點。
HTML/XHTML頁面可以通過較小的修改成XHTML MP,甚至不用修改(注意:布局是否适應小螢幕,檔案大小是否出最大)。
支援WCSS。移動裝置有很多不同的特征,比如螢幕大小,隻需寫一次結構,使用不同的WCSS檔案即可。
更多的表現控制。
(四) 不支援的WML 特性
1、XHTML MP 不支援<deck>和<card>标簽。
在XML中,一個檔案可以包含一個或更多的card,所有的card組合成一個deck,并在無線裝置中一同被下載下傳。WAP浏覽器每次隻顯示一個card,可以通過錨連結通路其他的card。通過這些,減少了伺服器的往返的通路。對性能的提高是有意義的。在XHTML MP中要實作類似的特性,可以使用multipart messages(多個文檔放到一個請求)另外一個方式是使用目标錨(一個頁面的不同位置)。
2、XHTML MP 不支援<timer>标簽
<head> <meta http-equiv="refresh" content="10;URL=http://www.planabc.net/" /> </head>
<meta>元素10秒後告訴WAP浏覽器URL。
注意點:WML timer 僅當進入card,而HTML refresh timer當進入XHTML MP頁面。
3、 XHTML MP 不支援事件。
WML支援四個事件(ontimer,onenterbackward,onenterforward,onpick),除ontimer其他事件無法模拟。如要使用,需使用WML1.X。
4、 XHTML MP 不支援變量。
在XML,可以聲明變量,并指派,擁有全局作用域。可以在任何的deck和card中使用。XHML MP放在伺服器端處理(必須發送并儲存)。
5、 XHTML MP 不支援用戶端腳本。
在XML,你可以使用用戶端腳本(WMLScript)。JavaScript的簡化版,常用來驗證資料。放在伺服器短處理。将來的版本将會支援用戶端腳本(ECMAScript MP),支援所有的WMLScript功能。
6、 XHTML MP 不支援可程式設計式軟鍵(Programmable SoftKeys)。
WML的一個最大特征。通過<do>标簽使用。在XHML MP中可以使用 accesskey 屬性。錨連結和送出按鈕支援這個屬性:
<a accesskey="1" href="part1.xhtml" target="_blank" rel="external nofollow" >XHTML MP Tutorial Part 1</a
WCSS中的-wap-accesskey屬性也可以用來定義:a.wcss_class_1 {-wap-accesskey: 1}
7、XHTML MP 不支援<u>标簽。
在XML,<u>用來在一些文字下添加下劃線。可以用WCSS中的text-decoration屬性。
8、XHTML MP 不支援Input框的format屬性。
在XML,可以定義類型和字數限制。可以使用WCSS中的-wap-input-format屬性,文法一緻。比如限制5個數字字元:input {-wap-input-format:”5N”}
9、 XHTML MP 不支援錨連結傳輸資料。
<p> 姓名: <input name=“name”/><br/> <anchor> <go method=“get” href=“yuanxin.php”><postfield name=“name” value=“$(name)”/></go> 送出 </anchor> </p>
<form action=“yuanxin.php” method=“get”> <p>姓名: <input name=“name”/><br/><input type=“submit” value=“送出"/></p> </form>
(五) 文法規則
标簽必須完全閉合。
标簽和屬性必須小寫。
屬性值必須包含在引号标記内。
不允許無屬性值存在。
标簽必須完全嵌套。
(六)MIME 類型和檔案擴充名
MIME類型: application/vnd.wap.xhtml+xml、application/xhtml+xml 、text/html。
動态生成MIME類型。獲得HTTP請求中的accept header資訊。
檔案擴充名:.xhtml、.html、.htm
(七)文檔結構
必須包含<html>, <head>, <title>和<body> 元素。
<?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>Hello world</title>
</head>
<body>
<p>Hello world. Welcome to taobao.com.</p>
</body>
</html>
XML聲明和字元編碼:<?xml version="1.0" encoding="UTF-8"?>
UTF-8/16編碼可省略。XML聲明也不是必須的,但如果忽略在許多WAP浏覽器中出錯。
必須有DOCTYPE聲明。在XML聲明和<html>元素之間。
<html>、<head>、<link>、<title>、<body>
<p>元素,align屬性已經去除,可以通過WAP CSS的text-align屬性來設定。
(八)通用的中繼資料
使用<meta/>标簽,包含在<head>内
WAP浏覽器如果不了解則忽略。
比如添加作者:<meta name="author" content=“yuanxin"/>
Cache Control:<meta/>标簽的一個應用是控制XHTML MP檔案在Cache中的存在周期:
<meta http-equiv="Cache-Control" content="no-cache"/>
<meta http-equiv="Cache-Control" content="max-age=0"/>
注意點:與裝置相關。一些使用不相的方法,一些沒有Cache機制。還有一些不支援<meta/>但識别Cache-Control:no-cache的HTTP頭。也可應用于圖檔的緩存。
周期性重新整理。必須配合使用。不是所有浏覽器都支援。
<meta http-equiv="Cache-Control" content="no-cache"/>
<meta http-equiv="refresh" content="15;URL=yuanxin.xhtml"/>
(九)常用标簽介紹
注釋:<!-- -- >,和HTML和WML1.X相同。
換行:<br/> ,和HTML和WML1.X相同。
水準線:<hr/>。不能包含在<p></p>标簽之内。
标題:<h1>-<h6>(不同的大小和樣式),有些裝置看起來一樣的。
字型樣式:XML可以使用标簽來改變字型樣式( <b>、<i>、<small>、<big>等)。但一些浏覽器隻支援其中的部分,不支援的忽略,不會出錯。 WCSS 控制字型格式。
與格式化文本:在XHTML MP中,标簽間空白不顯示,此外,段落中2個或更多的空白隻顯示一個,如果想保持文字的格式,可使用<pre>。
清單:<ul>、<ol>、<li>。對于<ol>元素,可以用屬性 start 指定數字開始的序列。還可以用WCSS來做更精确的控制。
顯示圖檔:<img>标簽用來顯示圖檔。和HTML一樣。如果檔案沒發現或者圖檔格式不支援,顯示alt屬性文本。Height和width屬性來指定圖檔顯示區域的高度和寬度。
除了老的WBMP圖檔格式,WAP2.0還支援WEB上的圖檔格式(gif, jpg和PNG),但WAP2.0無線裝置支援上面圖檔格式的某些。GPRS-gif,CDMA-png。可以通過accept HTTP header判斷設定。
關于大圖檔的釋出:很多WAP浏覽器都沒有水準滾動功能。如果寬度大于顯示屏,很多的WAP浏覽器會裁切圖檔。圖檔的按比例縮小不能幫助提升性能。大圖檔還會造成通路站點使用者的費用。
優化圖檔:1、用制圖軟體按比例縮小圖檔;2、如果是gif圖檔,減少顔色,但降低了圖檔品質,權衡。3、如果是jpg圖檔,儲存一定的壓縮比例,依然是權衡。
使用multipart messages,先下載下傳的XHTML MP文檔,後請求圖檔,産生多個請求。該方式可以使文檔和圖檔在一個請求,意味着一個頁面隻有一個請求。減少伺服器的壓力。
表格:建立表格,需要使用<table>、<tr>、<td>标簽,預設表格沒有邊線。屬性有rowspan和colspan。
錨連結:一般用在導航。标簽為<a></a>。屬性href定義指定的URL。目前頁面位置的跳轉:先設定目标連結,通過id屬性設定;再設定錨連結的URL為#id名稱。
對錨連結設定快捷鍵:<a>标簽的accesskey屬性,有效的值為:*,#,0-9。還可以用-wap-accesskey設定。
選擇清單:選擇清單使用<select>标簽,包含一個或更多的<option>标簽。<select>标簽的name屬性定義選擇清單的名字。name用來取得被選擇的item的值(option的value屬性定義)。
1. 多重選擇清單:Option的selected屬性用來設定預設的option。如果想設定多重選擇清單,可使用<select>标簽的multiple屬性,隻有一個唯一值‘multiple’。
2. Option分組:使用<optgroup>标簽,label屬性定義option組的名稱。
輸入元素:Text field、Password fireld、Checkbox、Radio button、Hidden field。通過<input>元素建立。傳輸資料到伺服器,<input>元素必須和<form>一起使用。Type屬性用來定義input元素的類别。Name屬性用來定義名稱,友善取得使用者資料。
<input type="text" name=“taobao" maxlength="16" value=“yuanxin"/>
input { -wap-input-format: "10N"}
<input type="password" name=“taobao"/>
<input type="checkbox" name=“taobao" value=“yuanxin" checked="checked"/>
<input type="radio" name=“taobao" value=“yuanxin" checked="checked"/>
<input type="hidden" name=“taobao" value=“yuanxin"/>
form元素:<input>、<select>等元素不能直接包含在form元素下,XHMTL MP标準規定必須有塊級元素。如果有non-ASCII字元,需使用POST方法來避免編碼問題。
<form method="get" action=“yuanxin.asp"> <p> <input ...> <select ...> </p> </form>
送出按鈕:所有的表單都必須包含一個送出按鈕。<input>元素用來建立一個送出按鈕。而type屬性被定義為’submit’。
<input type="submit" value="OK"/>
(九)常用标簽介紹
重置按鈕:并不是必須的。<input>元素用來建立一個重置按鈕。而type屬性被定義為’reset’。
<input type="reset" value="Default"/>
Div和Span。