WML - Wireless Markup Language P2

Overview

Ở bài trước mình đã chia sẻ về WML cơ bản, cách cài đặt, cấu hình WML trên Apache và IIS. Mình cũng đã chia sẻ về các Element mà WML hiện có. Các bạn có thể đọc lại tại bài WML - Wireless Markup Language P1

Trong phần 2 này mình sẽ viết tiếp WML và chi tiết hơn về một số Element đặc biệt của WML.

WML - comments

Giống với hầu hết các ngôn ngữ lập trình, WML cũng có thể đặt được comment trong mã. Với mục đích ghi lại các quyết định của chương trình trong code, việc này sẽ giup cho việc bảo trì dễ dàng hơn. WML sử dụng các định dạng tương tự HTML để comment một đoạn trong code.

  • Oneline comment
<!-- This will be assumed as a comment -->
  • Multiline comment
<!-- This is a multi-line
     comment -->

WML - variables

Có 2 cách khai báo biến trong WML

1. <setvar> element

Các <setvar> là kết qủa của việc sử lý một số việc. Các <setvar> có thể được sử dụng để thiết lập một biến theo các thành phần sau: <go>, <prev><refresh>.

Các attributes thiết đặt cho <setvar> element

  • name thiết đặt tên cho biến
  • value thiết đặt gía trị cho biến
  • class thiết đặt tên class
  • id thiết đặt một ID (ID này là duy nhất cho 1 element)

Ví dụ khởi tạo một biến a có gía trị là 1000

<setvar name="a" value="1000"/>

2. input element

Biến cũng được thiết lập thông qua yếu tố đầu vào như input, select, option. Một biến được tự động tạo ra tương ứng với các thuộc tính được đặt tên của một yếu tố đầu vào.

Ví dụ, các yếu tố sau đây sẽ tạo ra một biến có tên là b

<select name="b">
<option value="value1">Option 1</option>
<option value="value2">Option 2</option>
</select>

3. Using Variables

Mở rộng biến xảy ra trong thời gian chạy, trong microbrowser hoặc giả lập. Điều này có nghĩa là nó có thể được sử dụng qua các deck hoặc nhúng trong văn bản khác nhau.

Các biến được tham chiếu với một dấu $, và bất kỳ dấu hiệu đồng $ trong boong WML đều được hiểu như là một tham chiếu biến. Ví dụ khi ta gọi $a, $b

WML - Tasks

Task trong WML là một yếu tố xác định một hành động được thực hiện bởi trình duyệt, chứ không phải là một cái gì đó sẽ được hiển thị. Ví dụ, các hành động của một thẻ mới được đại diện bởi một <go>, và các hành động của việc trở lại được đại diện bởi <pre>. Các tasks element sẽ đóng gói tất cả các thông tin cần thiết để thực hiện các hành động.

WML có bốn yếu tố để xử lý tasks WML gồm go task, pre task, refresh task and noop taks.

<Go> Task

Như tên cho thấy, các <go>task đại diện cho hành động đi đến một thẻ mới.

Các <go> có các thuộc tính sau:

  • href dạng url, cung cấp cho các URL của thẻ mới.
  • method có 2 dạng get và post. Chỉ định các phương pháp đó phải được sử dụng trong một deck. Đây phải là một trong các giá trị tương ứng với GET và POST phương pháp HTTP
  • sendreferer có 2 gía trị true và false. Nếu thiết lập là true, trình duyệt sẽ gửi URL của deck đến cùng với request.
  • accept-charset gía trị mặc định là unknown.
  • class thiết lập class cho element
  • id là một gía trị unique
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
"http://www.wapforum.org/DTD/wml12.dtd">
<wml>
  <card title="GO Element">
    <p>
      <anchor>
        Using setvar:
        <go href="chapter2.wml" method="get">
          <postfield name="x" value="17"/>
          <postfield name="y" value="42"/>
        </go>
      </anchor>
    </p>
  </card>
</wml>

<prev> Task

Các <pre> task sử dụng cho việc quay trở lại thẻ truy cập trước đó. Nếu không có URL trước tồn tại, <pre> không có hiệu lực.

  • class thiết đặt tên class cho element
  • id thiết đặt Id unique
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
"http://www.wapforum.org/DTD/wml12.dtd">

<wml>
  <card title="Prev Element">
    <p>
      <anchor>
        <prev>
         <setvar name="password" value=""/>
        </prev>
      </anchor>
    </p>
  </card>
</wml>

<refresh> Task

Sử dụng thẻ này để thiết lập lại một số hành động trên thẻ

  • class thiết lập tên class cho element
  • id thiết lập id unique
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
"http://www.wapforum.org/DTD/wml12.dtd">
<wml>
  <card title="Referesh Element">
    <p>
      <anchor>
         Refresh this page:
        <go href="test.wml"/>
        <refresh>
          <setvar name="x" value="100"/>
        </refresh>
      </anchor>
    </p>
  </card>
</wml>

*<noop> Task

Mục đích sử dụng thẻ này là đi đến việc không làm gì (no operation). Các attributes cho thẻ

  • class
  • id
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
"http://www.wapforum.org/DTD/wml12.dtd">
<wml>
  <card title="Noop Element">
    <p>
      <do type="prev" label="Back">
        <noop/>
      </do>
    </p>
  </card>
</wml>

WML - Timer

Đôi khi, bạn có thể muốn một cái gì đó xảy ra mà không cần người dùng phải kích hoạt một điều khiển. WML cung cấp cho bạn OnTimer để xử lý vấn đề này. Gía trị time sẽ được đếm ngược đến khi về 0 và tính theo đơn vị giây. Các attributes cho Timer

  • name tên cho element
  • value gía trị cho timeout
  • class
  • id

Ví dụ cụ thể sau khi click vào Enter 5s sẽ hiển thị ra dòng chữ welcome to he main screen

wap-example19.gif wap-example20.gif

Regard

Mình xin dừng lại bài giới thiệu WML tại đây. Trên đây là toàn bộ những element đặc biệt trong WML. Các bạn có thể sử dụng WML để viết ra một trang WAP hiển thị trên thiết bị di động. Tiêu chí của WML là nhẹ, không tốn băng thông nên rất phù hợp cho việc thiết kế mobile wap.

Tài liệu tham khảo

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

http://www.tutorialspoint.com/wml

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