Ý nghĩa của XML
XML là viết tắt của Extensible Markup Language (ngôn ngữ đánh dấu mở rộng). XML trở thành Khuyến nghị của W3C năm 1998 và mô tả dữ liệu bằng các thẻ do chính bạn đặt tên – đó chính là ý nghĩa của từ “extensible” (mở rộng). Khác với HTML, XML không có thẻ định sẵn: một danh mục sản phẩm có thể dùng <product> và <price>, còn một hóa đơn dùng <item> và <total>.
Một tài liệu XML nhỏ trông như sau: <book id="1"><title>XML Basics</title><year>2026</year></book>. XML là văn bản thuần túy, nên con người đọc được và mọi ngôn ngữ lập trình đều xử lý được. XML chỉ lưu trữ và tổ chức dữ liệu – tự nó không làm gì cả. Chính các chương trình quyết định dữ liệu mang ý nghĩa gì và hiển thị ra sao.
Quy tắc cú pháp XML
Mọi tài liệu XML đều phải tuân theo một vài quy tắc nghiêm ngặt. Tài liệu tuân thủ các quy tắc này được gọi là well-formed (đúng cú pháp):
- Có đúng một phần tử gốc chứa tất cả các phần tử khác.
- Mọi phần tử đều được đóng:
<name>…</name>, hoặc tự đóng như<br/>. - Các phần tử được lồng nhau đúng cách:
<b><i>…</i></b>, không bao giờ là<b><i>…</b></i>. - Tên phân biệt chữ hoa và chữ thường:
<Item>và<item>là hai phần tử khác nhau. - Giá trị thuộc tính luôn nằm trong dấu nháy đơn hoặc nháy kép.
&và<trong văn bản được escape thành&và<.- Khai báo tùy chọn
<?xml version="1.0" encoding="UTF-8"?>phải nằm ở ngay đầu tài liệu.
Chú thích được viết dưới dạng <!-- … -->. Công cụ kiểm tra XML (XML validator) kiểm tra tất cả các quy tắc này trong một giây và chỉ ra dòng chứa lỗi.
Phần tử và thuộc tính trong XML
Phần tử (element) gồm thẻ mở, nội dung và thẻ đóng: <price>19.90</price>. Phần tử có thể chứa văn bản, các phần tử khác hoặc cả hai. Thuộc tính (attribute) là một cặp tên–giá trị nằm trong thẻ mở: <price currency="EUR">.
| Phần tử | Thuộc tính | |
|---|---|---|
| Ví dụ | <color>red</color> | color="red" |
| Có thể lặp lại | Có | Không, mỗi phần tử một lần |
| Có thể chứa phần tử con | Có | Không, chỉ chứa văn bản |
| Thứ tự có ý nghĩa | Có | Không |
Quy ước phổ biến: dùng phần tử cho chính dữ liệu và cho những gì có thể lặp lại hoặc có cấu trúc, còn thuộc tính cho siêu dữ liệu như ID, đơn vị hoặc kiểu.
XML đúng cú pháp (well-formed) và XML hợp lệ (valid)
XML well-formed (đúng cú pháp) tuân theo các quy tắc cú pháp; parser sẽ từ chối mọi thứ khác. XML valid (hợp lệ) là XML đúng cú pháp và còn khớp với một schema quy định những phần tử và thuộc tính nào được phép, theo thứ tự nào và với kiểu dữ liệu nào.
- DTD (Document Type Definition) là ngôn ngữ schema đầu tiên, được tích hợp sẵn trong XML 1.0. DTD cũng có thể khai báo các entity như
. - XSD (XML Schema Definition) được viết bằng chính XML và hỗ trợ các kiểu dữ liệu như ngày tháng và số thập phân. Các định dạng hóa đơn điện tử như CFDI, NF-e và UBL đều công bố schema XSD.
Namespace trong XML
Vì ai cũng có thể tự đặt tên thẻ, hai bộ từ vựng có thể dùng cùng một tên – <title> của một cuốn sách (tên sách) và <title> của một người (chức danh). Namespace tách biệt chúng bằng cách gắn tên với một URI. xmlns:cfdi="http://www.sat.gob.mx/cfd/4" khai báo tiền tố cfdi, nên <cfdi:Comprobante> thuộc bộ từ vựng CFDI 4.0 của Mexico. Namespace mặc định, xmlns="…" không có tiền tố, áp dụng cho mọi phần tử không có tiền tố nằm bên trong nó. URI chỉ là một định danh; không có gì được tải xuống từ đó.
So sánh XML, JSON và HTML
| XML | JSON | HTML | |
|---|---|---|---|
| Mục đích | Lưu trữ và trao đổi dữ liệu có cấu trúc và tài liệu | Trao đổi dữ liệu, đặc biệt trong web API | Hiển thị trang web |
| Tên thẻ hoặc tên khóa | Do bạn tự đặt | Do bạn tự đặt | Cố định theo chuẩn HTML |
| Kiểu dữ liệu | Văn bản, trừ khi schema định nghĩa kiểu | Chuỗi, số, boolean, null, mảng, object | Văn bản |
| Thuộc tính | Có | Không | Có |
| Chú thích | Có | Không | Có |
| Schema | DTD, XSD | JSON Schema | – |
| Lỗi cú pháp | Bị parser từ chối | Bị parser từ chối | Được trình duyệt tự sửa |
JSON ngắn gọn hơn và ánh xạ trực tiếp sang object trong JavaScript, vì vậy hầu hết web API đã chuyển sang JSON. XML vẫn mạnh ở những nơi tài liệu trộn lẫn văn bản và markup, cần namespace hoặc phải được kiểm tra nghiêm ngặt theo schema – đó là lý do cơ quan thuế, nhà xuất bản và các định dạng văn phòng vẫn dựa vào XML.
File .xml là gì và cách mở file XML
File .xml là một file văn bản thuần chứa tài liệu XML, thường được mã hóa UTF-8. Vì là văn bản, bạn có thể mở nó bằng bất kỳ trình soạn thảo văn bản nào – Notepad trên Windows, TextEdit trên Mac hoặc trình soạn thảo code như VS Code. Chrome và Firefox hiển thị file XML dưới dạng cây khi bạn kéo file vào cửa sổ trình duyệt, còn Excel có thể nhập dữ liệu XML vào bảng tính.
Nhiều file dùng XML mà không có đuôi .xml: ảnh .svg, feed .rss, schema .xsd, stylesheet .xsl, file .config trong .NET và file .plist trên macOS (có thể được lưu dưới dạng XML). File Word, Excel và PowerPoint (.docx, .xlsx, .pptx) thực chất là các kho nén ZIP chứa đầy file XML.
XML được dùng ở đâu?
- Sitemap:
sitemap.xmlcho công cụ tìm kiếm biết website có những trang nào. - Feed RSS và Atom: các trang tin tức, blog và podcast đăng tải cập nhật dưới dạng XML.
- SVG: đồ họa vector trên web là tài liệu XML.
- File Office: Office Open XML (DOCX, XLSX, PPTX) và OpenDocument (ODT, ODS) là các gói ZIP chứa XML.
- Hóa đơn điện tử: CFDI ở Mexico và NF-e ở Brazil là các file XML phải được ký số và cấp phép trước khi có giá trị pháp lý; UBL là định dạng XML đứng sau hệ thống hóa đơn điện tử Peppol ở châu Âu và nhiều nơi khác.
- Dịch vụ web SOAP: ngân hàng, nhà cung cấp dịch vụ thanh toán và hệ thống của cơ quan nhà nước trao đổi các thông điệp XML được mô tả bằng file WSDL.
- Ứng dụng Android: layout, tài nguyên chuỗi và
AndroidManifest.xmlđược viết bằng XML. - Cấu hình:
pom.xmlcủa Maven,web.configcủa .NET và nhiều thiết lập build, máy chủ khác.
Câu hỏi thường gặp
XML là viết tắt của từ gì?
Extensible Markup Language (ngôn ngữ đánh dấu mở rộng). “Extensible” (mở rộng) nghĩa là bạn tự định nghĩa thẻ của mình, còn “markup” (đánh dấu) nghĩa là cấu trúc được viết dưới dạng các thẻ bao quanh dữ liệu.
XML có phải là ngôn ngữ lập trình không?
Không. XML là một định dạng dữ liệu: nó mô tả và tổ chức thông tin nhưng không thể tính toán gì. Các công nghệ liên quan như XPath và XSLT dùng để truy vấn và biến đổi XML.
Ngày nay XML còn được sử dụng không?
Có. JSON đã thay thế XML trong nhiều web API, nhưng XML vẫn là chuẩn cho sitemap, feed RSS, SVG, tài liệu văn phòng, layout Android, dịch vụ SOAP và hóa đơn điện tử ở nhiều quốc gia.
Cập nhật lần cuối: