Tạo bởi Trần Văn Điêp|
Học PHP

[XML] Tạo tài liệu XML

Giới thiệu

Trong thế giới lập trình web, HTMLXML đều là các ngôn ngữ đánh dấu (markup languages). Tuy nhiên, mục đích và cách sử dụng của chúng hoàn toàn khác nhau.
Nếu HTML được thiết kế để hiển thị nội dung trên trình duyệt, thì XML được tạo ra để lưu trữ và truyền dữ liệu giữa các hệ thống.

Hiểu và sử dụng tốt XML là kỹ năng quan trọng giúp lập trình viên:

  • Làm việc với API, SOAP, RSS, config file, hoặc tích hợp hệ thống.

  • Tạo dữ liệu có cấu trúc dễ dàng đọc – xử lý – mở rộng.

  • Xây dựng hệ thống backend hoặc web service chuyên nghiệp.

Trong bài viết này, bạn sẽ học cách:

  1. Tạo file XML chuẩn theo cú pháp quốc tế.

  2. Hiểu về namespace, entity, CDATA trong XML.

  3. So sánh sự khác biệt giữa XML và HTML thông qua ví dụ cụ thể.


Cấu trúc cơ bản của một tài liệu XML

Một tài liệu XML luôn bắt đầu với dòng khai báo phiên bản:

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

Tiếp theo, XML sẽ có thẻ gốc (root element) bao quanh toàn bộ nội dung.
Mỗi tài liệu XML có thể khai báo DTD (Document Type Definition) để định nghĩa cấu trúc dữ liệu hợp lệ, giúp kiểm tra (validate) nội dung XML.

Ví dụ:

<!DOCTYPE book [ <!ELEMENT book (title, author, price)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT price (#PCDATA)> <!ENTITY TVD "TRAN VAN DIEP"> ]>

Giải thích:

  • <!ELEMENT>: Khai báo các phần tử (element) hợp lệ.

  • #PCDATA: Viết tắt của Parsed Character Data, nghĩa là dữ liệu dạng text.

  • <!ENTITY>: Khai báo thực thể (entity), có thể tái sử dụng trong tài liệu (giống như biến trong lập trình).


Tạo file XML hoàn chỉnh

Ví dụ: vidu.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE book [ <!ELEMENT book (title, author, price)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT price (#PCDATA)> <!ENTITY TVD "TRAN VAN DIEP"> ]> <book-list xmlns:s="URL"> <s:book xmlns:s="URL1" xmlns="URL5"> <title><![CDATA[ Lap Trinh C <>sdjhfdsfh w8r3i4 ]]></title> <s:author>Aptech - &TVD;</s:author> <price>200,000 VND</price> </s:book> <s:book xmlns:k="URL2"> <k:title><![CDATA[ Lap Trinh C <>sdjhfdsfh w8r3i4 ]]></k:title> <author>Aptech - &TVD;</author> <price>200,000 VND</price> </s:book> <t1:book xmlns:t1="URL3" xmlns:t2="URL4"> <t1:title><![CDATA[ Lap Trinh C <>sdjhfdsfh w8r3i4 ]]></t1:title> <t2:author>Aptech - &TVD;</t2:author> <price>200,000 VND</price> </t1:book> </book-list>

Phân tích:

  1. Khai báo XML + DTD:
    Đảm bảo tài liệu hợp lệ, có cấu trúc thống nhất.

  2. Sử dụng Namespace:

    • xmlns:s="URL": khai báo namespace s cho nhóm thẻ có tiền tố s:.

    • Giúp tránh trùng tên thẻ khi kết hợp dữ liệu từ nhiều nguồn khác nhau.

  3. Thẻ CDATA:
    Dùng khi bạn muốn chứa nội dung đặc biệt (ký tự <, >, &...) mà không muốn XML phân tích cú pháp.

    <![CDATA[ Lap Trinh C <>sdjhfdsfh w8r3i4 ]]>
  4. Thực thể (Entity):
    &TVD; sẽ được thay thế bằng giá trị "TRAN VAN DIEP" khi đọc XML.


Cấu trúc file HTML tương ứng

Ví dụ: vidu.html

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Book Management Page</title> </head> <body> <table border="1"> <tr> <td>Name</td> <td>Author</td> <td>&nbsp;&gt;&lt;Price</td> </tr> <tr> <td>Lap Trinh C</td> <td>Aptech</td> <td>200,000 VND</td> </tr> </table> </body> </html>

Mục đích: hiển thị dữ liệu dạng bảng trên trình duyệt web.
HTML chỉ quan tâm giao diện — không phải cấu trúc dữ liệu nội bộ.


So sánh chi tiết giữa XML và HTML

Tiêu chíXMLHTML
Mục đíchLưu trữ, trao đổi dữ liệuTrình bày nội dung trên web
Thẻ (tag)Do người dùng tự định nghĩaCó sẵn trong tiêu chuẩn HTML
Kiểm tra lỗi cú phápRất nghiêm ngặt, phân biệt hoa – thườngLinh hoạt, không phân biệt hoa thường
NamespaceHỗ trợ namespace để phân biệt dữ liệuKhông có khái niệm namespace
CDATACho phép chứa ký tự đặc biệtKhông cần thiết
Trình duyệt hiển thịKhông hiển thị trực tiếpHiển thị trực tiếp nội dung
Khả năng mở rộngCao – dùng cho API, config, RSS, SOAPGiới hạn trong giao diện web
Công nghệ liên quanXSLT, DOM, XPath, XML SchemaCSS, JavaScript

Khi nào nên dùng XML?

XML thường được sử dụng trong các tình huống sau:

  1. Truyền dữ liệu giữa các hệ thống:

    • Các web service SOAP, hoặc REST API cũ.

  2. Lưu trữ cấu hình ứng dụng:

    • File AndroidManifest.xml, pom.xml trong Maven, web.xml trong Java EE.

  3. Trao đổi dữ liệu có cấu trúc:

    • Các hệ thống ERP, tài chính, bảo hiểm...

  4. Định nghĩa giao diện hoặc template:

    • Framework Android sử dụng XML để định nghĩa layout.


Lời khuyên khi làm việc với XML

  • Luôn khai báo encoding để tránh lỗi ký tự tiếng Việt.

  • Sử dụng DTD hoặc XML Schema (XSD) để xác thực cấu trúc dữ liệu.

  • Tránh lỗi cú pháp: XML rất nghiêm ngặt, chỉ cần thiếu một dấu đóng thẻ là tài liệu bị hỏng.

  • Khi dùng CDATA, không nên lồng CDATA trong CDATA khác.

  • Sử dụng namespace cẩn thận, giúp tài liệu có khả năng mở rộng mà không xung đột.


Ứng dụng thực tế: Đọc XML bằng PHP

PHP cung cấp các hàm và lớp hỗ trợ đọc – ghi XML rất mạnh mẽ, như:

1. Dùng simplexml_load_file()

$xml = simplexml_load_file('vidu.xml'); foreach ($xml->book as $book) { echo $book->title . " - " . $book->author . "<br>"; }

2. Dùng DOMDocument

$dom = new DOMDocument(); $dom->load('vidu.xml'); $books = $dom->getElementsByTagName('book'); foreach ($books as $book) { echo $book->getElementsByTagName('title')[0]->nodeValue . "<br>"; }

3. Chuyển XML sang JSON

$xml = simplexml_load_file('vidu.xml'); $json = json_encode($xml); echo $json;

XML và JSON – ai “lên ngôi”?

Trong thời đại hiện nay, JSON đang dần thay thế XML trong các ứng dụng web hiện đại vì:

  • Gọn nhẹ hơn.

  • Dễ đọc hơn.

  • Tích hợp tốt với JavaScript và REST API.

Tuy nhiên, XML vẫn có chỗ đứng vững chắc trong:

  • Hệ thống lớn, doanh nghiệp, chính phủ.

  • Các file cấu hình phức tạp.

  • Các ứng dụng cần xác thực cấu trúc dữ liệu chặt chẽ.


Kết luận

XML là nền tảng quan trọng trong lập trình web và phần mềm, giúp dữ liệu có cấu trúc, dễ chia sẻ và tái sử dụng.
Qua bài viết này, bạn đã:

  • Hiểu cách tạo file XML hoàn chỉnh.

  • Biết cách khai báo DTD, Entity, CDATA, và Namespace.

  • Nắm rõ sự khác biệt giữa XML và HTML.

  • Biết cách đọc – xử lý XML trong PHP.

👉 Nếu bạn đang học lập trình PHP/MySQL, hãy thực hành tạo file XML như ví dụ trên và viết chương trình PHP đọc dữ liệu XML hiển thị ra HTML.
Đó là bước khởi đầu tuyệt vời để bạn tiến xa hơn trong hành trình trở thành lập trình viên web chuyên nghiệp.


Bạn có muốn tôi mở rộng bài này thêm phần “Tạo XML động từ MySQL bằng PHP (xuất dữ liệu ra XML)” không?
Nếu có, tôi có thể viết hướng dẫn chi tiết kèm code thực hành.

Phản hồi từ học viên

5

Tổng 0 đánh giá

Đăng nhập để làm bài kiểm tra

Chưa có kết quả nào trước đó