Bài 01: XML là gì? Cú pháp căn bản của XML

Ngoài cách lưu trữ dữ liệu trong các hệ quản trị CSDL ra thì bạn có thể lưu trữ dữ liệu trong file TXT, file JSON hay file XML đều được. Tuy nhiên với những hệ thống lớn thì bắt buộc ta phải lưu trữ trong hệ quản trị CSDL bởi vì nó cũng cấp những tính năng giúp quản lý dữ liệu tốt hơn. Còn đối với XML hay JSON thì ứng dụng lớn nhất của nó trong lập trình web đó là xây dựng các Service và API, nghĩa là các API đó sẽ trả kết quả về dạng JSON hoặc XML các hệ thống khác có thể hiểu được. Ví dụ để tạo một ứng dụng đặt phòng trên mobile thì bạn phải xây dựng một Service và nhiệm vụ của service đó là trả kết quả danh sách phòng về cho App Mobile, mà với ngôn ngữ lập trình Mobile khác hoàn toàn với PHP hay C# nên ta phải trao đổi dữ liệu thông qua XML hoặc JSON.

test php

banquyen png

Bài viết này được đăng tại

freetuts.net

, không được copy dưới mọi hình thức.

Hiện nay người ta hay sử dụng JSON hơn là XML nhưng mình đã có một loạt bài viết về JSON rồi nên trong loạt bài viết này ta sẽ tìm hiểu về XML. Bài đầu tiên này ta sẽ tìm hiểu khái niệm về XML là gì và cách tạo một file XML đơn giản.

1. XML là gì?

XML là viết tắt của từ eXtensible Markup Language, hay còn gọi là ngôn ngữ đánh dấu mở rộng do W3C đề nghị với mục đích tạo ra các ngôn ngữ đánh dấu khác. Đây là một tập hợp con đơn giản có thể mô tả nhiều loại dữ liệu khác nhau nên rất hữu ích trong việc chia sẻ dữ liệu giữa các hệ thống. Ví dụ khi bạn xây dựng một ứng dụng bằng C# và một ứng dụng bằng PHP thì hai ngôn ngữ này không thể hiểu nhau, vì vậy ta sẽ sử dụng XML để trao đổi dữ liệu.

Tất cả những đặc tả dữ liệu XML đều phải tuân theo quy luật và cú pháp của nó nên hầu như các file XML đều rất nghiêm khắc trong việc biên dịch. Tuy nhiên công nghệ này cần phải được xem xét bởi vì trong quá trình thao tác và truyền dữ liệu nó có tỉ lệ sai sót lên tới 5% – 7%. Con số này không cao nhưng cũng rất đáng để cân nhức khi sử dụng.

Bài viết này được đăng tại [free tuts .net]

Điển hình nhất là ngôn ngữ đánh dấu siêu văn bản HTML sử dụng cú pháp của XML để tạo nên và nó có các bộ phần tử và thuộc tính không mềm dẻo nên chỉ có tác dụng trong việc trình bày dữ liệu trên trình duyệt Browser.

Để rõ hơn về khái niệm XML là gì thì bạn nên đọc ở bài viết trên Wiki nhé.

2. Cú pháp của tài liệu XML

Nếu bạn đã học qua HTML rồi thì rất dễ dàng hiểu cú pháp của XML bởi vì HTML được xây dựng dựa trên cú pháp của XML.

File XML sẽ có phần mở rộng là .xml. Tuy nhiên bạn hoàn toàn có thể sử dụng ngôn ngữ lập trình để thay đổi phần mở rộng cho nó (sẽ tìm hiểu sau).

Cú pháp của thẻ XML:

XML được xây dựng dựa vào cấu trúc NODE lồng nhau, mỗi node sẽ có một thẻ mở và một thẻ đóng như sau:

<nodename>nội dung</nodename>

Trong đó:

  • <nodename> là thẻ mở, tên của thẻ này do bạn tự định nghĩa.
  • </nodename> là thẻ đóng, tên của thẻ này phải trùng với tên của thẻ mở.
  • content là nội dung của thẻ này

Ví dụ mình lưu trữ domain của mình thì cấu trúc như sau:

<domain>freetuts.net</domain>

Bạn hoàn toàn có thể bổ sung các thuộc tính vào các thẻ XML bằng cách sử dụng cú pháp sau:

<nodename ten_thuoc_tinh="giá trị">content</nodename>

Ví dụ bạn lưu trữ thông tin domain và chủ sở hữu của nó thì có thể lưu như sau:

<domain owner="Nguyễn Văn Cường" email="[email protected]">freetuts.net</domain>

Khai báo Header (Chỉ thị xử lý):

Trên đầu mỗi file XML bạn phải khai báo một thẻ để thông báo version XML đang sử dụng (thường là version 1.0), và còn có thể chứa các thông tin về mã hóa ký tự hoặc các phụ thuộc bên ngoài khác (sẽ tìm hiểu sau). Giá trị của encoding (kiểu mã hóa ký tự) thuộc một trong các định dạng sau: UTF-8, UTF-16, ISO-10646-UCS-2, ISO-10646-UCS-4, ISO-8859-1 to ISO-8859-9, ISO-2022-JP, Shift_JIS, EUC-JP.

Cú pháp của thẻ chỉ thị xử lý như sau:

<?xml version="1.0" encoding="UTF-8"?>

Như vậy với các ví dụ trên thì cấu trúc đúng sẽ phải là:

<?xml version="1.0" encoding="UTF-8"?>
<domain>freetuts.net</domain>

Và:

<?xml version="1.0" encoding="UTF-8"?>
<domain owner="Nguyễn Văn Cường" email="[email protected]">freetuts.net</domain>

Root node:

Mỗi tài liệu XML nên có một thẻ ngoài cùng và ta gọi thẻ này là root node. Thẻ này sẽ khai báo tên chính của tài liệu XML.

Ví dụ mình cần lưu trữ danh sách domain thì có thể viết như sau:

<?xml version="1.0" encoding="UTF-8"?>
<domains>
    <domain owner="Nguyễn Văn Cường" email="[email protected]">freetuts.net</domain>
    <domain owner="Nguyễn Văn Cường" email="[email protected]">qa.freetuts.net</domain>
</domains>

Không có một quy tắc đặt tên nào cả mà quy tắt do lập trình viên đặt ra, tuy nhiên lời khuyên là bạn nên đặt tên sao cho ngữ nghĩa phù hợp với nội dung của file.

Phần này chúng ta sẽ tìm hiểu rõ hơn ở bài tiếp theo.

3. Lời kết

Về khái niệm XML là gì thì bạn nên tham khảo thêm ở trang trên trang W3C, riêng với bài thứ nhất này mục đích là giới thiệu cú pháp căn bản của một tài liệu XML nên mình không viết nhiều. Bài tiếp theo chúng ta sẽ tìm hiểu cấu trúc cây của tài liệu XML.