wml語言學習筆記--基礎教程(轉)

來源:互聯網
上載者:User

wml語言學習筆記--基礎教程
 
 
   某駝一直覺得學習是人生中最大的樂趣.雖然某駝現在還菜的不得了.年前學了css+div排版,某駝覺得很有收穫。也曾一度因為自己在短時間內掌握一門技巧而沾沾自喜ing。不過自喜完了回頭看一眼學習過程,就發現自己學習過程中暴露出來的不足反而更觸目驚心。首先是因為學習時間短,有些精髓的東西理解不透,細節的地方也缺乏重視。所以作品出來的時候,讓高手一看就挑出了毛病。然後就是拓展。任何一門學問技巧都不是獨立的。css+div排版是web2.0標準的一部分,它的學習和web2.0應該是緊密結合在一起的。脫離了web2.0這個標準,單純css+div意義也是不大的。so,我在學習css+div的時候,web2.0的其他部分注意到了多少呢。so,雖然短暫的css+div排版學習已經過去,css+div的路還有很長。而剛剛開始的wml學習裡,我又能長進多少呢。       wml簡介: 
無限標記語言WML(Wireless Markup Language)是一種基於擴充標記語言XML(Extension Markup Language)的語言,是XML的子集。它可以顯示各種文字、映像等資料,是由WAP論壇( http://www.wapforum.org)提出並專為無線裝置使用者提供互動介面而設計的,目前版本為1.1版。這些無線裝置包括行動電話,呼機和個人數位助理PDA(Personal Digital Assistants)等。
編輯器
使用WML語言編寫WAP網頁或應用時,需要使用一個編輯器進行編輯。與HTML編程一樣,WML編寫的程式也是純檔案文本,可以使用任意文字編輯器進行編寫。某駝平時用的一些模擬器如nokia提供的除了能顯示外通常也帶有編輯的功能,方便隨時編寫隨時查看。wml檔案的拓展名可以是.wml或者.xml。當 然也可以用.php,.asp,.jsp來做,wml頁面裡也可以直接夾雜.php,.asp,.jsp等的代碼。當然這需要從伺服器端配置一下的說。   語言基礎知識   與HTML類似,WML的主要文法也是元素和標籤。元素是符合DTD(文檔類似定義)的文檔組成部分,如title(文檔標題)、IMG(映像)、table(表格)等等,元素名不區分大小寫。 WML使用標籤來規定元素的屬性和它在文檔中的位置。標籤使用小於符號(<)和大於符號(>)括起來,即採用“<標籤名>”的形式。標籤分單獨出現的標籤和成對出現的標籤兩種。大多數標籤是成對出現的,由首標籤和尾標籤組成。首標籤和尾標籤又分別稱為起始標籤和終止標籤。首標籤的格式為“<元素名>”,尾標籤的格式為“</元素名>”。成對標籤用於規定元素所含的範圍,比如<b>和</b>標籤用於界定黑體字的範圍,也就是說<b>和</b>之間包住的部分採用黑體字顯示。單獨標籤的格式為“<元素名/>”,他的作用是在相應的位置插入元素。如〈br/〉標籤表示在該標籤所在位置插入一個分行符號
以上一段話對熟練掌握html的人來說基本是廢話。
基本名詞解釋:
元素 : WML的元素(Element)用於描述卡片組(Deck)的標記資訊即結構資訊。一個元素通常有一個首標籤、內容、其它元素及一個尾標籤組成,具有下述兩種結構之一:
<首標籤>內容</尾標籤> 或 <標籤/>
元素包含的內容中還可以有元素,這些元素也是有首標籤、相應內容、其它元素及尾標籤組成。不包含內容的元素成為空白元素。它為一個單獨的標籤。或者說,單獨的標籤也是一種元素。
屬性 : WML與XML一樣,其標籤可以包含很多屬性。屬性用於給標籤提供必要的附加資訊,且屬性內容通常在起始標籤內使用。不過,屬性內容不會被瀏覽器顯示,它至作為參數為標籤提供必要的資訊。 指明屬性值的時候,需要把該值用引號擴起來,可以是單引號或者雙引號,引號通常成對嵌套使用。屬性名稱必須小寫。 例如:<card id="card 1" ontimer="#card2" title="Toolkit Demo"> 而且,單引號的屬性中還可以包含雙引號的屬性。實體字元也可以作為屬性值。實體字元是指諸如&、<、>、'、"的特殊字元,在WML程式中顯示著類字元需要特殊處理,後面我們介紹具體方法。
此步驟對html的熟練工來說也輕而易舉   注釋 : WML程式中也可以加入注釋。注釋內容用於給開發人員順利閱讀原始碼提供方便,它不會被瀏覽器顯示出來。注釋內容在標籤中用驚嘆號(。)引出,並用於<!--注釋內容-->的形 式。例如:<!-- Write your card implementation here.-->。需要說明的是,XML程式中不支援注釋的嵌套。   文檔結構 : WML文檔是由“卡片(Card)”和“卡片組(Deck)”構成的,一個Deck是一個或多個Card的集合。當用戶端發出請求之後,WML即從網路上把Deck發送到客戶瀏覽器,這時使用者就可以瀏覽Deck內包含的所有Card,而card之間的切換則是由用戶端的處理器來處理的。所以不必從網上單獨下載每一個Card,程式中的第一個Card是預設得可見的Card。
WML程式的基本結構 以下是wml的基本結構 <?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" " http://www.wapforum.org/DTD/wml_1.1xml">
<wml>
<head>
<access/>
<meta..../>
</head>
<card>
Some contents...
</card>
<wml>
該基本結構可以分為以下幾個關鍵區段: 1)聲明。WML程式有許多Deck組成,對於每一個Deck,在其文檔開頭必須進行XML的聲明和文件類型DOCTYPE的聲明。 XML聲明總是在檔案的第一行,注意前面最好不要有空格或者還行: <?xml version="1.0"?>
2)緊跟著是DOCTYPE聲明,注意聲明是字母的大小寫不要搞錯: <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" " http://www.wapforum.org/DTD/wml_1.1xml"> 這就是傳說中的檔案聲明。從xhtml開始所有的WML程式必須在檔案的開頭處聲明XML檔案類型,包括XML的版本,WML的文件類型、所用規範等。你開啟所有的wml文檔,開頭必定都是這一句。而且在相當長的一段時間內這一行連個標點符號都不會改變。   3)<wml>標籤。該標籤用於包含和定義WML的一個Deck。它有一個可選的xml:lang屬性來制定文檔的語言,比如<wml xml:lang="zh">表示文檔語言為中文。 然而這是一種很讓人喪氣的做法,因為即使規定了xml:lang="zh",很多wap瀏覽器仍然不支援中文,最萬無一失的方法還是把漢字轉化成uincode編碼。所以,去找一個編碼轉換器吧,那將會是很有用的。也許有可以直接進行轉化的wml編輯器也不一定,駝駝沒有用過。WML還支援其他系列的字元集子集,例如UTF-8、ISO-8859-1或UCS-2等。 順便提醒一下:<?xml version="1.0" encoding="gb2312">也是一種表示文檔語言為中文的方法,然而它並不比<wml xml:lang="zh">有效多少。 4)<head>標籤。該標籤用於包含和定義Deck的相關資訊。<head>標籤之間可以包含一個<access>標籤和多個<meta>標籤。 5)<access/>標籤。它的一般形式是<access domain="域" path="/路徑"/>,主要用於制定當前Deck的存取控制資訊,有兩個可選的屬性。其中,domain用來制定域,預設值為當 前域,path用來制定路徑,預設值為“/”,即跟目錄。由於<access>單獨使用,所以要用“/”結尾,後面我們還會系統的講解WML的各種標籤,這裡即使看不懂也沒關係,主要有些感性的 認識就可以了。 6)<meta...>標籤。它的一般形式是<meta 屬性 content="值" scheme"格式" forua="true|false"/>,用於提供當前Deck的meta資訊,包括記憶體資料處理方式,以及資料轉送方式和處理方式等。有關該標籤的詳細內容我們後面會專門給出。 7)<card>標籤。一個Deck可以包含多個Card,每個Card的內容可能不止一屏顯示。對於每一個Card,WML均使用<card>和</card>進行包含和定義。 <card>同時可以包含多個可選的屬性,如<card id="name" title="label" newcontext="false" ordered="true" onenterforwand="url" pmemterbackward="url" ontimer="url">。至於這些屬性的具體含義及功能,我們將在後面介紹。   WML字元使用基本規則 WML是一種比較嚴格的語言,字元使用必須遵守相應的規則,這些基本規則主要包括以下幾個方面:

1)大小寫敏感。在WML中,無論是標籤元素還是屬性內容都是大小寫敏感的,這一點繼承了XML的嚴格特性,任何大小寫錯誤都可能導致訪問錯誤。
一般來說,WML的所有標籤,屬性,規定和枚舉及它們的可接受值必須小寫,Card的名字和變數可大寫和小寫,但它是區分大小寫。包括參數的名字和參數的數值都是大小寫敏感的,例如variable1、Variable1和vaRiable1都是不同的參數。  2)空格。對於連續的Null 字元,程式運行時只需要一個空格。屬性名稱、符號(=)和值之間不能有空格。

3)標籤。標籤內屬性的值必須使用雙引號(")或單引號(')括起來。對於不成對出現的標籤,必須在大於符號(>)前加上順斜杠(/),比如換列標籤必須寫成<br/>才正確。

4)不顯示的內容。在WML中,不顯示的字元主要包括分行符號、斷行符號符、空格和水平定位字元,它們的8位十六進位內碼分別為10、13、32及9。 程式執行時,WML將忽視所有的多於一個以上的不顯示字元,即WML會把一個或多個連續的換行、斷行符號、水平定位字元及空格轉換成一個空個。

5)保留字元。這是WML的一些特殊字元,如小於符號(<)、大於符號(>)、單引號“'”、雙引號“"”、和號(&)。   變數

WML編程中可以使用變數,變數使用前必須進行定義。變數一旦在Deck中的某一個Card上定義過,其他Card則可以不必重新定義就能直接調用該變數。
定義變數的文法格式為:
$identifier
$(identifier)
$(identifier:conversion)
其中identifier指變數名,或說變數標示符;conversion指變數的替代。
變數名是由US-ACSII碼、底線和數字組成的,並且只能以US-ACSII碼開頭。變數名嚴格區分大小寫,也即,變數名是大小寫敏感的。
定義變數的文法在WML中享有最高的解釋優先順序。
有關變數的使用說明如下:
1)在WML中,變數可以在字串中使用,並且在運行中可以更新變數的值。
2)當變數等同於Null 字元串時,變數將處於未設定狀態,也就是空(Null)。
3)當變數不等同於Null 字元串時,變數將處於設定狀態,也就是非空(Not Null)狀態。
4)在“$identifier”形式下,WML通常以變數名後面的一個空格表示該變數名的結束。如果在某些情況下空格無法表示一個變數名的結束,或者變數名中包含有空格,則必須使用括弧將變數名括起來,即採用“$(identifier)”的形式。
WML程式中的變數是可以替代的,我們可以把變數的數值賦給Card中的某一文本。有關變數替代說明如下:
1)在WML程式中,只有文本部分才可以實現替代。
2)替代一般在運行期發生,而且替代不會影響變數現在的值。
3)任何標籤是按照字串替代的方式實現的。
4)替代是按照字串替代的方式實現的。

由於變數在文法中有最好的優先順序,包含變數聲明字元的字串將被當作變數對待,所以如果要使程式顯示“___FCKpd___0rdquo;符號,則需要連續使用兩個“___FCKpd___0rdquo;進行說明。例如:<p> Your acconut has $15.00 in it </p>一句顯示的結果為:Your account has $15.00 in it。
卡片與卡片組

前面我們分析了WML程式的結構時,曾將講到WML文檔的資訊是通過卡片集和卡片組集的形式進行組織的。一個Deck是一個或多個Card的集合。當客戶終端發出請求之後,WML即從網路上把Deck發送到客戶的瀏覽器,Deck是伺服器發送資訊的最小單位。使用者瀏覽器收到Deck後,可以瀏覽其中包含的所有Card。Card用於表示或描述一個或多個使用者互動單位。   卡片組模板

同一卡片組通常會含有許多卡片,這些卡片的定義、屬性或格式通常都大同小異。如果我們逐一定義各個卡片,顯然是十分麻煩的。為此,WML提供了卡片組模板的功能,模板內定義了一系列標準和參數,可以應用到同一卡片組的所有卡片中去,從而能夠大大地提高我們的編程效率。有關卡片組模板的內容我們後面會專門介紹的。
  ok,瞭解了以上這些,wml的基礎知識就算over了。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.