WML - Wireless Markup Language P1

Overview

WML(Wireless Markup Language) là một ngôn ngữ XML được sử dụng để xác định giao diện, nội dung cho các thiết bị như PDA(Personal digital assistant) hay điện thoại di động. Bài viết này sẽ cung cấp cho các bạn một sự hiểu biết về ngôn ngữ WML, để từ đó phát triển các ứng dụng WAP.

WML được viết dựa trên HDML và cấu trúc của nó chúng ta nhìn sẽ thấy rất giống HTML. Tuy nhiên thì WML sẽ được sử dụng hữu ích trên thiết bị có màn hình nhỏ hay đường truyền băng thông thấp. Chúng ta sẽ thấy được vì sao nó lại có thể được như vậy, điển hình của UML đó là WAP( được viết bằng WML, file có phần mở rộng ".wml". Các kiểu MIME của WML là "text/vnd.wap.wml").

Discussion

Sự khác biệt lớn nhất giữa WML và HTML đó chính là đơn vị chuyển hướng. Với mỗi HTML được định nghĩa sẽ tương ứng với 1 page, việc này sẽ được hiểu rằng bạn có bao nhiêu màn hình sẽ phải định nghĩa bấy nhiêu HTML page tương ứng. Và việc chuyển hướng trong HTML sẽ là chuyển qua lại giữa các page này. Còn với WML chuyển hướng sẽ là 1 card, một WML có thể chứa nhiều card và chúng tạo thành 1 deck.

Khi một trang WML được truy cập từ điện thoại di động, tất cả các thẻ trong trang được tải về từ máy chủ WAP. Vì vậy, nếu người dùng đi đến một card, các trình duyệt di động không phải gửi bất kỳ yêu cầu đến máy chủ từ các tập tin có chứa các deck đã được lưu trữ trong các thiết bị không dây. Bạn có thể đặt trong card các thành phần links, text, images, input fields, option boxes...

Structure & Environment

Sau đây là cấu trúc cơ bản của một chương trình 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>

Dòng đầu tiên của văn bản này cho biết rằng đây là một tài liệu XML và phiên bản là 1.0. Dòng thứ hai lựa chọn các loại tài liệu và cung cấp cho các URL của định nghĩa kiểu tài liệu(DTD).

Để chạy được đoạn script trên các bạn cần lưu chúng ra file ví dụ test.wml. Và bạn có thể chạy url giống như http://websitename.com/wapstuff/test.wml. Nhưng trước hết bạn cần phải giả lập WAP Gateway trên PC của bạn.

Bạn cần chắc chắn được 3 thành phần dưới được thiết đặt

  • A WAP enabled Web Server: Bạn có thể cho phép Apache của bạn hoặc Microsoft IIS để phục vụ tất cả các yêu cầu của WAP.

  • A WAP Gateway Simulator: Điều này là cần thiết để tương tác với máy chủ WAP của bạn.

  • A WAP Phone Simulator: Đây là yêu cầu để kiểm tra trang WAP của bạn và hiển thị tất cả các trang WAP

Configure Apache

Nếu chọn Apache làm web server thì bạn cần tìm đến file /conf/httpd.conf và thêm những dòng sau vào file sau đó restart lại Apache.

 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

Configure Microsoft IIS

Nếu bạn chọn IIS làm web server thì bạn cần làm theo các step dưới đây

  1. Bạn tìm đến service Internet Manager và thêm các loại WAP MIME cho toàn bộ một máy chủ hoặc các thư mục cá nhân.
  2. Mở hộp thoại Properties chọn tab HTTP Headers, sau đó chọn nút File Types ở góc dưới bên phải.
  3. Đối với mỗi loại MIME được liệt kê trên phần Confiure Apache, cung cấp phần mở rộng có hoặc không có dấu chấm(nó sẽ được tự động thêm vào), sau đó bấm OK trong hộp thoại Properties để chấp nhận thay đổi.

Installing WAP Gateway Simulator

Có rất nhiều WAP Gateway Simulator có sẵn trên Internet bạn có thể tải về bất kỳ version nào. Bạn cần chạy cái này trước khi bắt đầu WAP Mobile giả lập. Có thể tải từ http://nokia-wap-gateway-simulator.software.informer.com/

Installing WAP Phone Simulator

WAP Simulator có thể tải về từ http://www.winwap.org/

Hoặc http://nokia-mobile-browser-simulator.software.informer.com/

Sau khi cài đặt xong và chạy thì tương ứng hiển thị 2 page tương ứng với 2 card

wap-example1.gif wap-example2.gif

WAP Model

Hình ảnh mô tả WAP model

wap-model.gif

Ta thấy mô hình rất giống với mô hình Internet phải không? Đúng vậy, nếu không có WAP Gateway/Proxy hai mô hình sẽ là giống nhau. WAP Gateway/Proxy là thực thể kết nối các miền không dây với Internet. Yêu cầu được gửi từ máy khách không dây WAP Gateway/Proxy sử dụng không dây phiên Protocol (WSP). Trong bản chất của nó, WSP là một hệ nhị phân của HTTP.

Elements

WML rất giống với HTML ở việc sử dụng các thẻ tag để thể hiện từng thành phần con bên trong nó. Tuy nhiên, WML phải tuân thủ cấu trúc, thứ bậc XML và do đó, các yếu tố phải có một thẻ bắt đầu và một thẻ kết thúc <tag>content</tag>

Deck & Card Elements

  • <!--> Định nghĩa một WML comment
  • <wml> Định nghĩa một deck WML(WML root)
  • <head> Xác định thông tin đầu
  • <meta> Định nghĩa một meta information
  • <card> Định nghĩa một deck
  • <access> Định nghĩa một thông tin access control của một deck
  • <template> Định nghĩa một template cho tất cả cards trong một deck

Text Elements

  • <br> Định nghĩa xuống dòng
  • <p> Định nghĩa một đoạn văn bản
  • <table> Định nghĩa một table
  • <td> Định nghĩa một table cell
  • <tr> Định nghĩa một table row
  • <pre> Định nghĩa một preformatted text

Text Formatting Tags

  • <b> Định nghĩa một bold text
  • <big> Định nghĩa một big text
  • <em> Định nghĩa một emphasized text
  • <i> Định nghĩa một italic text
  • <small> Định nghĩa một small text
  • <strong> Định nghĩa một strong text
  • <u> Định nghĩa một underlined text

Image Elements

  • <img> Định nghĩa một image

Anchor Elements

  • <a> Định nghĩa một anchor viết tắt của anchor
  • <anchor> Định nghĩa một anchor

Event Elements

  • <do> Định nghĩa một do event handler
  • <onevent> Định nghĩa một onevent event handler
  • <postfield> Định nghĩa một postfield event handler
  • <ontimer> Định nghĩa một ontimer event handler
  • <onenterforward> Định nghĩa một onenterforward handler
  • <onenterbackward> Định nghĩa một onenterbackward handler
  • <onpick> Định nghĩa một onpick event handler

Task Elements

  • <go> các hành động của chuyển đổi card này sang card khác
  • <noop>
  • <prev> back lại cho các thẻ trước
  • <refresh> Làm mới một số card variables quy định.

Input Elements

  • <input> Định nghĩa một input field
  • <select> Định nghĩa một select group
  • <option> Định nghĩa một option in a selectable list
  • <fieldset> Định nghĩa một set của input fields
  • <optgroup> Bắt đầu một group của một selectable list

Variable Elements

  • <setvar> Bắt đầu một variable
  • <timer> Bắt đầu một timer

Tài liệu tham khảo

http://www.w3school.com.cn/wap

http://www.tutorialspoint.com/wml

http://www.developershome.com/wap/wml/