天天看點

WAP2.0(XHTML MP)基礎介紹

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> &nbsp;&nbsp;<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> &nbsp;&nbsp;姓名:&nbsp;&nbsp;<input name=“name”/><br/> &nbsp;<anchor> <go method=“get” href=“yuanxin.php”><postfield name=“name” value=“$(name)”/></go> &nbsp;送出&nbsp;&nbsp;</anchor> </p>

       <form action=“yuanxin.php” method=“get”> &nbsp;       <p>姓名:&nbsp;&nbsp;&nbsp;&nbsp;<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> &nbsp;&nbsp;&nbsp;       &nbsp;       <input ...> &nbsp;&nbsp;&nbsp;&nbsp;              <select ...>        </p> </form>

送出按鈕:所有的表單都必須包含一個送出按鈕。<input>元素用來建立一個送出按鈕。而type屬性被定義為’submit’。

       <input type="submit" value="OK"/>       

(九)常用标簽介紹

 重置按鈕:并不是必須的。<input>元素用來建立一個重置按鈕。而type屬性被定義為’reset’。

       <input type="reset" value="Default"/>

 Div和Span。