XML

Ngôn ngữ đánh dấu mở rộng, ngôn ngữ đánh dấu mô tả cấu trúc dữ liệu bằng thẻ.

XML (Extensible Markup Language) là ngôn ngữ đánh dấu đa năng mô tả cấu trúc dữ liệu bằng thẻ. Được W3C chuẩn hóa năm 1998, nó bắt nguồn từ SGML giống như HTML nhưng có khả năng tự do định nghĩa thẻ tùy chỉnh. Khả năng biểu diễn rõ ràng ý nghĩa và cấu trúc dữ liệu đã dẫn đến việc áp dụng rộng rãi như định dạng trao đổi dữ liệu giữa các hệ thống khác nhau.

XML có hệ sinh thái phong phú các công nghệ liên quan. XSD (XML Schema Definition) cho xác thực lược đồ, XSLT (XSL Transformations) cho chuyển đổi, XPath cho chọn phần tử, và namespace cho tránh xung đột từ vựng cung cấp bộ công cụ toàn diện để xử lý cấu trúc dữ liệu lớn và phức tạp. Trong thực tế, XML được sử dụng trong sitemap.xml (sơ đồ trang web cho công cụ tìm kiếm), RSS/Atom feed (phân phối tin tức), SOAP (giao thức dịch vụ web), SVG (đồ họa vector), tài liệu Office (OOXML) và nhiều lĩnh vực khác.

Quy tắc cú pháp XML nghiêm ngặt hơn HTML. Tất cả thẻ phải được đóng (<br />), giá trị thuộc tính phải được đặt trong dấu ngoặc kép, phân biệt chữ hoa chữ thường, và chỉ cho phép một phần tử gốc. Các ký tự đặc biệt (<, >, &, ", ') phải được escape bằng tham chiếu thực thể (&lt;, &gt;, v.v.). Sự nghiêm ngặt này đơn giản hóa triển khai parser và nâng cao độ tin cậy dữ liệu.

Mặc dù JSON đang thay thế XML làm định dạng phản hồi REST API, XML vẫn được ưu tiên trong một số tình huống: khi cần biểu diễn cấu trúc tài liệu phong phú (nội dung hỗn hợp, thuộc tính và văn bản cùng tồn tại), yêu cầu xác thực lược đồ nghiêm ngặt, cần quản lý từ vựng dựa trên namespace, hoặc đòi hỏi tương thích với hệ thống hiện có. XML cũng được thiết lập như tiêu chuẩn ngành trong các lĩnh vực như giao thức FIX tài chính và HL7 y tế.

So sánh XML và JSON, XML có xu hướng dài dòng do thẻ và thuộc tính nhưng hỗ trợ xác thực lược đồ và chú thích. JSON đơn giản và nhẹ hơn nhưng thiếu chú thích và yêu cầu JSON Schema như cơ chế riêng biệt cho xác thực.

Từ góc độ đếm ký tự, các phần tử cú pháp phong phú của XML (thẻ, thuộc tính) dẫn đến số ký tự cao hơn JSON hoặc YAML cho cùng dữ liệu. Ví dụ, <name>Taro</name> là 19 ký tự trong khi "name": "Taro" của JSON là 14 ký tự. Chi phí này cần được xem xét khi tối ưu hóa kích thước phản hồi API hoặc giảm khối lượng truyền dữ liệu.

Chia sẻ bài viết này