WML 快速指南



WML - 概述

WAP(無線應用協議)架構的最頂層由WAE(無線應用環境)組成,WAE包含WML和WML指令碼語言。

  • WML代表**W**ireless **M**arkup **L**anguage(無線標記語言)

  • WML是XML的一種應用,它在文件型別定義中定義。

  • WML基於HDML,並進行了修改,以便可以與HTML進行比較。

  • WML考慮了小螢幕和低頻寬傳輸。

  • WML是WAP規範中定義的標記語言。

  • WAP網站是用WML編寫的,而網站是用HTML編寫的。

  • WML與HTML非常相似。它們都使用標籤,並以純文字格式編寫。

  • WML副檔名為“.wml”。WML的MIME型別為“text/vnd.wap.wml”。

  • WML支援客戶端指令碼。支援的指令碼語言稱為WMLScript。

WML版本

WAP論壇釋出了最新版本WAP 2.0。WAP 2.0中定義的標記語言是XHTML Mobile Profile (MP)。WML MP是XHTML的子集。還引入了一種名為WCSS(WAP CSS)的樣式表。WCSS是CSS2的子集。

大多數釋出的新款手機型號都支援WAP 2.0。因為WAP 2.0向後相容WAP 1.x,所以支援WAP 2.0的移動裝置可以顯示XHTML MP和WML文件。

WML 1.x是較早的技術。但這並不意味著它沒有用,因為許多僅支援WML 1.x的無線裝置仍在使用。WML的最新版本是2.0,它是為了向後相容性而建立的。因此,WAP網站開發人員無需擔心WML 2.0。

WML 卡組和卡片

HTML和WML之間的一個主要區別在於,HTML的基本導航單元是頁面,而WML的基本導航單元是卡片。一個WML檔案可以包含多個卡片,它們構成一個卡組。

當從手機訪問WML頁面時,頁面中的所有卡片都將從WAP伺服器下載。因此,如果使用者轉到同一卡組的另一張卡片,移動瀏覽器無需向伺服器傳送任何請求,因為包含該卡組的檔案已儲存在無線裝置中。

您可以將連結、文字、影像、輸入欄位、選項框和許多其他元素放在卡片中。

WML程式結構

以下是WML程式的基本結構

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
"http://www.wapforum.org/DTD/wml12.dtd">

<wml>

<card id="one" title="First Card">
<p>
This is the first card in the deck
</p>
</card>

<card id="two" title="Second Card">
<p>
Ths is the second card in the deck
</p>
</card>

</wml>

第一行文字說明這是一個XML文件,版本為1.0。第二行選擇文件型別並給出文件型別定義(DTD)的URL。

一個WML卡組(即頁面)可以包含一個或多個卡片,如上所示。我們將在後續章節中詳細瞭解WML文件結構。

與HTML 4.01 Transitional不同,文字不能直接包含在<card>...</card>標籤對中。因此,您需要像上面那樣在<p>...</p>中放入內容。

WAP網站設計注意事項

無線裝置的顯示屏和鍵盤尺寸有限。因此,在設計WAP網站時務必考慮到這一點。

在設計WAP網站時,您必須確保保持簡潔易用。您應該始終記住,沒有標準的微型瀏覽器行為,並且資料鏈路可能相對較慢,約為10Kbps。但是,使用GPRS、EDGE和UMTS,根據您的位置,這種情況可能不會持續很久。

以下是設計服務時應牢記的一些一般設計技巧

  • 將WML卡組和影像大小保持在1.5KB以下。

  • 保持文字簡短且有意義,並儘可能預先編碼選項,以最大限度地減少使用者資料輸入的痛苦體驗。

  • 保持URL簡短且易於記憶。

  • 最大限度地減少選單級別,以防止使用者迷路並減慢系統速度。

  • 使用標準的佈局標籤,例如<big>和<b>,並以邏輯方式組織您的資訊。

  • 不要過度使用圖形,因為許多目標裝置可能不支援它們。

WML - 環境

要開發WAP應用程式,您需要以下內容

  • **支援WAP的Web伺服器:**您可以啟用Apache或Microsoft IIS來處理所有WAP客戶端請求。

  • **WAP閘道器模擬器:**這是與WAP伺服器互動所必需的。

  • **WAP手機模擬器:**這是測試WAP頁面和顯示所有WAP頁面所必需的。

您可以使用以下語言編寫WAP頁面

  • 無線標記語言 (WML) 用於開發WAP應用程式。
  • WML指令碼用於增強WAP應用程式的功能。

配置Web伺服器

在普通的Web應用程式中,MIME型別設定為text/html,表示普通的HTML程式碼。另一方面,影像可以指定為image/gif或image/jpeg等。透過此內容型別規範,Web瀏覽器知道Web伺服器返回的資料型別。

要使您的Apache與WAP相容,您無需做太多事情。您只需要新增對下面列出的MIME型別和副檔名的支援。

副檔名MIME型別
WML(.wml)text/vnd.wap.wml
WMLScript(.wmls)text/vmd.wap.wmlscript
WMLScriptc(.wmlsx)application/vnd.wap.wmlscriptc
WMLC(.wmlc)application/vnd.wap.wmlc
WBMP(.wbmp)image/vnd.wap.wbmp

配置Apache Web伺服器以支援WAP

假設您已經在計算機上安裝了Apache Web伺服器。現在,我們將告訴您如何在Apache Web伺服器中啟用WAP功能。

因此,找到Apache的httpd.conf檔案(通常位於/etc/httpd/conf中),並將以下幾行新增到該檔案中,然後重新啟動伺服器。

AddType text/vnd.wap.wml .wml
AddType text/vnd.wap.wmlscript .wmls
AddType application/vnd.wap.wmlc .wmlc
AddType application/vnd.wap.wmlscriptc .wmlsc
AddType image/vnd.wap.wbmp .wbmp

在動態應用程式中,必須動態設定MIME型別,而在靜態WAP應用程式中,必須適當地配置Web伺服器。

配置Microsoft IIS以支援WAP

要配置Microsoft IIS伺服器以提供WAP內容,您需要執行以下操作

  1. 開啟Internet服務管理器控制檯,並展開樹以檢視您的網站條目。您可以將WAP MIME型別新增到整個伺服器或各個目錄。
  2. 透過右鍵單擊相應的伺服器或目錄,然後從選單中選擇“屬性”,開啟“屬性”對話方塊。
  3. 在“屬性”對話方塊中,選擇“HTTP標頭”選項卡,然後選擇右下角的“檔案型別”按鈕。
  4. 對於前面表格中列出的每個MIME型別,提供帶點或不帶點的副檔名(它將自動為您新增),然後單擊“屬性”對話方塊中的“確定”以接受您的更改。

安裝WAP閘道器模擬器

網際網路上有許多WAP閘道器模擬器可用,因此下載其中任何一個並安裝到您的PC上。您需要在啟動WAP手機模擬器之前執行此閘道器。

WAP閘道器將接收您的請求,並將其傳遞給Web伺服器,從Web伺服器接收到的任何響應都將傳遞給手機模擬器。

您可以從諾基亞網站下載它

安裝WAP手機模擬器

網際網路上有許多WAP模擬器可用,因此下載其中任何一個並安裝到您的PC上,您將將其用作WAP客戶端。以下是下載模擬器的常用連結

**注意:**如果您有支援WAP的手機,則無需安裝此模擬器。但在開發過程中,使用模擬器更方便經濟。

WAP模型

我只是為了您的參考提供本節內容,如果您不感興趣,可以跳過本節。

下圖顯示了WAP程式設計模型。請注意它與Internet模型的相似之處。如果沒有WAP閘道器/代理,這兩個模型實際上將是相同的。

The WAP Model

WAP閘道器/代理是連線無線域和Internet的實體。您應該注意,從無線客戶端傳送到WAP閘道器/代理的請求使用無線會話協議(WSP)。本質上,WSP是HTTP的二進位制版本。

無線標記語言(WML)已被採用以開發最佳化的WAP應用程式。為了節省無線網路中的寶貴頻寬,WML可以編碼為緊湊的二進位制格式。編碼WML是WAP閘道器/代理執行的任務之一。

WAP模型的工作原理?

在實際使用中,WAP的工作方式如下

  1. 使用者選擇其移動裝置上的一個選項,該選項分配有包含無線標記語言 (WML) 內容的URL。

  2. 手機透過電話網路使用二進位制編碼的WAP協議將URL請求傳送到WAP閘道器。

  3. 閘道器將此WAP請求轉換為指定的URL的常規HTTP請求,並將其傳送到Internet。

  4. 相應的Web伺服器接收HTTP請求。

  5. 伺服器處理請求,就像處理任何其他請求一樣。如果URL引用靜態WML檔案,則伺服器將交付該檔案。如果請求CGI指令碼,則會對其進行處理,並照常返回內容。

  6. Web伺服器將HTTP標頭新增到WML內容並將其返回給閘道器。

  7. WAP閘道器將WML編譯成二進位制形式。

  8. 然後,閘道器將WML響應傳送回手機。

  9. 手機透過WAP協議接收WML。

  10. 微型瀏覽器處理WML並在螢幕上顯示內容。

WML - 語法

WML程式通常分為兩部分:文件序言和正文。請考慮以下程式碼

以下是WML程式的基本結構

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
"http://www.wapforum.org/DTD/wml12.dtd">

<wml>

<card id="one" title="First Card">
<p>
This is the first card in the deck

</p>
</card>

<card id="two" title="Second Card">
<p>
Ths is the second card in the deck
</p>
</card>

</wml>

WML文件序言

第一行文字說明這是一個XML文件,版本為1.0。第二行選擇文件型別並給出文件型別定義(DTD)的URL。引用的DTD在WAP 1.2中定義,但此標題會隨WML的版本而更改。必須精確複製標題,以便工具包自動生成此序言。

序言元件不是WML元素,不應關閉,即不應為它們提供結束標籤或以/>結束它們。

WML文件正文

主體內容包含在`` 和``標籤對中。WML文件的主體可以包含以下一項或多項:

  • Deck(牌組)

  • Card(卡片)

  • 要顯示的內容

  • 導航指令

與HTML 4.01 Transitional不同,文字不能直接包含在<card>...</card>標籤對中。因此,您需要像上面那樣在<p>...</p>中放入內容。

測試您的程式

將以上程式碼放入名為test.wml的檔案中,並將此WML檔案儲存在本地硬碟上,然後使用模擬器檢視。

這是開發和測試WML檔案的最高效方式。但是,由於您的目標是開發一項將提供給WAP手機使用者的服務,因此您應該在本地開發完WML檔案後將其上傳到伺服器,並透過真實的網際網路連線進行測試。當您開始開發更復雜的WAP服務時,這就是您識別和糾正效能問題的方法,否則這些問題可能會導致您失去網站訪問者。

將test.wml檔案上傳到伺服器時,您將測試WML模擬器的外觀和行為,並檢查Web伺服器是否已正確設定。現在啟動您的模擬器並使用它訪問test.wml的URL。例如,URL可能如下所示:

http://websitename.com/wapstuff/test.wml

注意:訪問任何URL之前,請確保WAP閘道器模擬器正在您的PC上執行。

下載WAP程式後,您將在手機上只看到第一張卡片。以下是諾基亞手機瀏覽器4.0上上述示例的輸出。這款手機支援水平滾動。您可以透過按下“左”或“右”按鈕檢視螢幕外的文字。

WAP Example 1

按下右按鈕後,第二張卡片將可見,如下所示:

WAP Example 2

WML - 元素

WML由一組元素定義,這些元素指定WML牌組的所有標記和結構資訊。元素由標籤標識,每個標籤都包含在一對尖括號中。

與HTML不同,WML嚴格遵守XML層次結構,因此,元素必須包含起始標籤;任何內容,例如文字和/或其他元素;以及結束標籤。元素具有以下兩種結構之一:

  • `` 內容 ``:此形式與HTML相同。

  • ``:當元素不能包含可見內容或為空時使用,例如換行符。WML文件的序言部分沒有任何具有結束元素的元素。

下表列出了大部分有效的元素。所有這些元素的完整詳細資訊在WML標籤參考中給出。

Deck & Card 元素

WML 元素 用途
` 定義WML註釋
` 定義WML牌組(WML根)
`` 定義頭部資訊
`` 定義元資訊
`` 定義牌組中的一張卡片
`` 定義關於牌組訪問控制的資訊
`