XML là gì? Tìm hiểu Ngôn ngữ đánh dấu mở rộng và ứng dụng

Chào các bạn, tôi là WiWeb đây! Trong thế giới phát triển web và quản lý dữ liệu, chắc hẳn bạn đã từng nghe qua thuật ngữ XML. Nhưng XML là gì? Nó hoạt động ra sao và tại sao lại quan trọng đến vậy? Với kinh nghiệm nhiều năm trong lĩnh vực thiết kế website tại WiWeb (wiweb.vn), tôi nhận thấy việc hiểu rõ về Ngôn ngữ đánh dấu XML là một lợi thế không nhỏ. Bài viết này sẽ cùng bạn đi sâu vào tìm hiểu eXtensible Markup Language, khám phá cấu trúc, ứng dụng và so sánh nó với các công nghệ tương tự. Hãy cùng WiWeb làm sáng tỏ mọi thứ về XML nhé!

XML là gì? Giải mã Ngôn ngữ đánh dấu mở rộng (eXtensible Markup Language)

Khi bắt đầu tìm hiểu về cách dữ liệu được cấu trúc và trao đổi trên internet hoặc giữa các ứng dụng, bạn sẽ không thể bỏ qua XML. Vậy XML là gì? XML là viết tắt của eXtensible Markup Language, dịch ra tiếng Việt có nghĩa là Ngôn ngữ đánh dấu mở rộng. Khác với HTML (HyperText Markup Language) được thiết kế chủ yếu để hiển thị dữ liệu trên trình duyệt web, XML lại tập trung vào việc mô tảlưu trữ dữ liệu một cách có cấu trúc. Điểm cốt lõi nằm ở chữ ‘eXtensible’ (Mở rộng) – nó không có các thẻ (tags) được định nghĩa trước như HTML. Thay vào đó, bạn, người tạo ra tài liệu XML, có toàn quyền tạo file XML với các thẻ tùy chỉnh để mô tả chính xác cấu trúc và ý nghĩa dữ liệu của mình. Hãy tưởng tượng bạn cần lưu thông tin về một cuốn sách. Với XML, bạn có thể tự tạo các thẻ như <sach>, <tieu_de>, <tac_gia>, <nam_xuat_ban> thay vì bị giới hạn bởi các thẻ có sẵn. Điều này mang lại sự linh hoạt đáng kinh ngạc trong việc định hình dữ liệu theo nhu cầu cụ thể của từng dự án hay hệ thống. XML đóng vai trò như một bộ khung xương vững chắc, giúp dữ liệu trở nên dễ hiểu hơn cho cả máy tính và con người.

XML là gì? Giải mã Ngôn ngữ đánh dấu mở rộng (eXtensible Markup Language)
XML là gì? Giải mã Ngôn ngữ đánh dấu mở rộng (eXtensible Markup Language)

Định nghĩa XML (eXtensible Markup Language)

Một cách chính thức hơn, XML (eXtensible Markup Language) là một ngôn ngữ đánh dấu được Tổ chức World Wide Web Consortium (W3C) đề xuất nhằm định nghĩa một tập hợp các quy tắc để mã hóa tài liệu theo một định dạng vừa con người đọc được, vừa máy tính đọc được. Mục tiêu chính của XML là đơn giản hóa việc chia sẻ dữ liệu giữa các hệ thống khác nhau, đặc biệt là qua Internet. Nó không làm gì cả về mặt hiển thị, XML chỉ đơn thuần là thông tin được bao bọc trong các thẻ. Bạn định nghĩa các thẻ và cấu trúc của riêng mình. Ví dụ, một file XML là gì? Đó là một tệp văn bản thuần túy (.txt) chứa dữ liệu được đánh dấu bằng các thẻ XML do bạn tự định nghĩa, tuân theo các quy tắc cú pháp của XML. Ngôn ngữ này nhấn mạnh vào tính đơn giản, tổng quát và khả năng sử dụng qua Internet. Nó là một định dạng dữ liệu dạng văn bản có hỗ trợ mạnh mẽ thông qua Unicode cho nhiều ngôn ngữ khác nhau. Mặc dù thiết kế của XML tập trung vào tài liệu, nó được sử dụng rộng rãi để biểu diễn các cấu trúc dữ liệu tùy ý, ví dụ như trong các dịch vụ web. Nhiều giao diện lập trình ứng dụng (API) đã được phát triển để hỗ trợ các nhà phát triển phần mềm xử lý dữ liệu XML.

Định nghĩa XML (eXtensible Markup Language)
Định nghĩa XML (eXtensible Markup Language)

Đặc điểm nổi bật của XML

Ngôn ngữ đánh dấu XML sở hữu nhiều đặc điểm quan trọng khiến nó trở thành một công cụ mạnh mẽ trong việc quản lý và trao đổi dữ liệu. Dưới đây là những điểm nổi bật chính mà khi làm việc với XML, bạn sẽ thấy rất rõ:

  • Tính mở rộng (eXtensible): Đây là đặc tính cốt lõi. XML cho phép bạn tự do định nghĩa các thẻ đánh dấu của riêng mình. Không giống HTML với bộ thẻ cố định, bạn có thể tạo ra các thẻ phù hợp nhất để mô tả cấu trúc dữ liệu cụ thể của bạn. Ví dụ, nếu làm website bán hàng, bạn có thể tạo thẻ <san_pham>, <gia_ban>, <mo_ta>.
  • Tập trung vào dữ liệu: Mục đích chính của XML là mang và cấu trúc dữ liệu, không phải hiển thị nó. Việc trình bày dữ liệu là nhiệm vụ của các công nghệ khác như CSS hoặc XSLT (eXtensible Stylesheet Language Transformations).
  • Cấu trúc phân cấp rõ ràng: Dữ liệu trong XML được tổ chức theo dạng cây (tree structure) với một phần tử gốc (root element) duy nhất và các phần tử con lồng nhau. Điều này giúp thể hiện mối quan hệ giữa các thành phần dữ liệu một cách trực quan.
  • Tính tự mô tả (Self-descriptive): Nhờ việc sử dụng các thẻ do người dùng định nghĩa, cấu trúc của một tài liệu XML thường tự giải thích ý nghĩa của dữ liệu mà nó chứa. Ví dụ, thẻ <tac_gia>Nguyễn Văn A</tac_gia> rõ ràng cho biết đây là tên tác giả.
  • Độc lập nền tảng và ngôn ngữ: File XML là các tệp văn bản thuần túy. Điều này có nghĩa là chúng có thể được tạo, đọc và xử lý trên bất kỳ hệ điều hành nào (Windows, macOS, Linux) và bằng bất kỳ ngôn ngữ lập trình nào hỗ trợ xử lý văn bản hoặc có thư viện phân tích XML.
  • Chuẩn hóa W3C: XML là một tiêu chuẩn mở được phát triển và duy trì bởi W3C, đảm bảo tính nhất quán và khả năng tương tác rộng rãi.

Những đặc điểm này kết hợp lại tạo nên sự linh hoạt và sức mạnh của XML trong nhiều ứng dụng của XML khác nhau.

Đặc điểm nổi bật của XML
Đặc điểm nổi bật của XML

Cấu trúc phân cấp rõ ràng

Một trong những sức mạnh lớn nhất của Ngôn ngữ đánh dấu XML chính là cấu trúc XML phân cấp của nó. Hãy hình dung dữ liệu XML giống như một cái cây gia phả. Luôn có một gốc duy nhất, và từ gốc đó tỏa ra các nhánh, rồi các nhánh con, cứ thế tiếp tục. Trong XML, cái gốc đó được gọi là phần tử gốc (root element). Mọi tài liệu XML hợp lệ phải có một và chỉ một phần tử gốc duy nhất bao bọc tất cả các phần tử khác.

Bên trong phần tử gốc là các phần tử con (child elements). Mỗi phần tử con lại có thể chứa các phần tử con khác, tạo thành các cấp độ lồng nhau. Mối quan hệ cha-con này giúp biểu diễn cấu trúc dữ liệu một cách cực kỳ logic và dễ hiểu. Ví dụ, xem xét cấu trúc lưu thông tin một cửa hàng sách:

<cua_hang_sach>
  <sach isbn="978-0743273565">
    <tieu_de>The Great Gatsby</tieu_de>
    <tac_gia>F. Scott Fitzgerald</tac_gia>
    <nam_xuat_ban>1925</nam_xuat_ban>
  </sach>
  <sach isbn="978-0061120084">
    <tieu_de>To Kill a Mockingbird</tieu_de>
    <tac_gia>Harper Lee</tac_gia>
    <nam_xuat_ban>1960</nam_xuat_ban>
  </sach>
</cua_hang_sach>

Trong ví dụ này:

  • <cua_hang_sach> là phần tử gốc.
  • <sach> là các phần tử con trực tiếp của <cua_hang_sach>.
  • <tieu_de>, <tac_gia>, <nam_xuat_ban> là các phần tử con của <sach>.

Cấu trúc cây này không chỉ giúp con người dễ đọc mà còn cho phép các chương trình máy tính dễ dàng phân tích (parse) và truy xuất thông tin cần thiết. Bạn có thể dễ dàng tìm tất cả các cuốn sách, hoặc tìm tên tác giả của một cuốn sách cụ thể dựa trên cấu trúc này. Rõ ràng, mạch lạc và có tổ chức – đó chính là ưu điểm của cấu trúc XML.

Cấu trúc phân cấp rõ ràng
Cấu trúc phân cấp rõ ràng

Tính tự mô tả (Self-descriptive)

Khi nói XMLtính tự mô tả (Self-descriptive), điều đó có nghĩa là gì? Nó có nghĩa là bản thân cấu trúc và tên các thẻ (tags) trong tài liệu XML thường cung cấp thông tin rõ ràng về loại dữ liệu mà chúng chứa đựng. Khác với các định dạng dữ liệu cũ hơn có thể chỉ là một chuỗi các giá trị không rõ ràng, XML sử dụng các thẻ đánh dấu do con người đọc được để diễn giải ý nghĩa của dữ liệu.

Hãy quay lại ví dụ về cuốn sách:

<sach isbn="978-0743273565">
  <tieu_de>The Great Gatsby</tieu_de>
  <tac_gia>F. Scott Fitzgerald</tac_gia>
  <nam_xuat_ban>1925</nam_xuat_ban>
</sach>

Ngay cả khi bạn chưa từng thấy file XML này trước đây, bạn vẫn có thể dễ dàng đoán được ý nghĩa của nó:

  • <sach>: Đại diện cho thông tin về một cuốn sách.
  • <tieu_de>: Chứa tiêu đề của cuốn sách.
  • <tac_gia>: Chứa tên tác giả.
  • <nam_xuat_ban>: Chứa năm xuất bản.
  • Thuộc tính isbn: Có vẻ là mã số ISBN của sách.

Sự rõ ràng này là một lợi thế lớn. Nó giúp các nhà phát triển dễ dàng hiểu cấu trúc dữ liệu mà không cần tài liệu giải thích chi tiết đi kèm (mặc dù tài liệu vẫn rất hữu ích!). Nó cũng giúp các hệ thống khác nhau khi trao đổi dữ liệu XML có thể tự ‘hiểu’ được ý nghĩa cơ bản của thông tin nhận được. Tất nhiên, mức độ tự mô tả phụ thuộc vào việc người tạo file XML chọn tên thẻ có ý nghĩa như thế nào. Nếu bạn đặt tên thẻ là <t1>, <t2>, <t3>, thì tính tự mô tả sẽ giảm đi đáng kể. Do đó, việc đặt tên thẻ rõ ràng, có ngữ nghĩa là một thực hành tốt khi làm việc với Ngôn ngữ đánh dấu XML. Bạn có thấy cách đặt tên thẻ như trên giúp việc đọc hiểu dễ dàng hơn nhiều không?

Tính tự mô tả (Self-descriptive)
Tính tự mô tả (Self-descriptive)

Độc lập nền tảng (Platform Independent)

Một trong những ưu điểm kỹ thuật quan trọng nhất của XML là tính độc lập nền tảng (Platform Independent). Điều này có nghĩa là gì trong thực tế? Rất đơn giản: dữ liệu XML có thể được tạo, lưu trữ, truyền và xử lý trên bất kỳ hệ điều hành (như Windows, macOS, Linux, Unix) và bởi các ứng dụng được viết bằng bất kỳ ngôn ngữ lập trình nào (như Java, C#, Python, JavaScript, PHP) mà không gặp vấn đề về tương thích cơ bản.

Lý do chính cho khả năng này là vì file XML về bản chất chỉ là các tệp văn bản thuần túy (plain text). Chúng sử dụng bộ ký tự tiêu chuẩn (thường là UTF-8 hoặc UTF-16) để biểu diễn dữ liệu. Văn bản thuần túy là định dạng phổ quát nhất mà mọi máy tính hiện đại đều có thể đọc và hiểu được. Bạn không cần bất kỳ phần mềm độc quyền hay thư viện đặc biệt nào chỉ để đọc nội dung của một tệp XML. Bất kỳ trình soạn thảo văn bản đơn giản nào (như Notepad trên Windows, TextEdit trên Mac, hay Vim/Nano trên Linux) cũng có thể mở và hiển thị nội dung của nó.

Điều này mang lại lợi ích to lớn trong việc tích hợp hệ thống. Giả sử hệ thống quản lý kho của bạn chạy trên máy chủ Linux và được viết bằng Java, trong khi hệ thống kế toán chạy trên Windows và được viết bằng C#. Nếu cả hai hệ thống thống nhất trao đổi dữ liệu bằng Ngôn ngữ đánh dấu XML, chúng có thể dễ dàng ‘nói chuyện’ với nhau. Hệ thống Java tạo ra một file XML chứa thông tin đơn hàng, gửi nó qua mạng, và hệ thống C# nhận tệp đó, phân tích (parse) nội dung và cập nhật vào cơ sở dữ liệu kế toán. Không quan trọng hệ điều hành hay ngôn ngữ lập trình là gì, miễn là cả hai đều tuân thủ tiêu chuẩn XML và có bộ phân tích XML (XML parser) phù hợp – mà hầu hết các ngôn ngữ lập trình hiện đại đều cung cấp sẵn.

Tính độc lập nền tảng này là yếu tố then chốt giúp XML trở thành lựa chọn phổ biến cho việc cấu hình ứng dụng, trao đổi dữ liệu giữa các dịch vụ web (Web Services), và nhiều ứng dụng của XML khác đòi hỏi khả năng tương tác rộng rãi.

Độc lập nền tảng (Platform Independent)
Độc lập nền tảng (Platform Independent)

Ứng dụng phổ biến của XML trong thực tế

Mặc dù có sự trỗi dậy của JSON, Ngôn ngữ đánh dấu XML vẫn giữ vai trò quan trọng và được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau nhờ vào cấu trúc chặt chẽ và khả năng mở rộng của nó. Dưới đây là một số ứng dụng của XML phổ biến mà có thể bạn đã gặp hoặc đang sử dụng mà không hề hay biết:

  • Cấu hình ứng dụng (Application Configuration): Rất nhiều ứng dụng, đặc biệt là các ứng dụng doanh nghiệp và ứng dụng phía máy chủ (server-side), sử dụng file XML để lưu trữ các thiết lập cấu hình. Ví dụ điển hình là tệp web.config trong các ứng dụng ASP.NET, pom.xml trong các dự án Maven (Java), hay các tệp cấu hình của Spring Framework. XML cung cấp một cấu trúc rõ ràng để định nghĩa các tham số, chuỗi kết nối cơ sở dữ liệu, cài đặt bảo mật, v.v.
  • Trao đổi dữ liệu (Data Exchange): Đây là một trong những ứng dụng đời đầu và quan trọng nhất của XML. Trước khi JSON trở nên phổ biến cho các API web, XML (thường thông qua giao thức SOAP – Simple Object Access Protocol) là phương thức chính để các hệ thống phần mềm khác nhau trao đổi thông tin qua mạng. Ngân hàng, chính phủ, và các tập đoàn lớn vẫn sử dụng XML cho các giao dịch dữ liệu phức tạp đòi hỏi cấu trúc và xác thực nghiêm ngặt.
  • Định dạng tài liệu (Document Formats): XML là nền tảng cho nhiều định dạng tài liệu phổ biến:
    • RSS (Really Simple Syndication) và Atom: Dùng để cung cấp các bản cập nhật nội dung web (tin tức, blog posts). Bạn đăng ký một nguồn cấp RSS/Atom và trình đọc tin của bạn sẽ tự động lấy về các bài viết mới dưới dạng file XML.
    • SVG (Scalable Vector Graphics): Một định dạng hình ảnh vector dựa trên XML, cho phép mô tả đồ họa hai chiều bằng văn bản XML.
    • Office Open XML (OOXML): Định dạng mặc định cho các tài liệu Microsoft Office hiện đại (.docx, .xlsx, .pptx). Thực chất, các tệp này là các tệp ZIP chứa nhiều file XML và tài nguyên khác bên trong, mô tả cấu trúc và nội dung của tài liệu.
    • XHTML: Một phiên bản HTML được định nghĩa lại theo các quy tắc chặt chẽ của XML.
  • Dịch vụ Web (Web Services): Như đã đề cập, SOAP sử dụng XML để định dạng các thông điệp yêu cầu và phản hồi giữa client và server. WSDL (Web Services Description Language), cũng dựa trên XML, được dùng để mô tả các dịch vụ web.
  • Lưu trữ dữ liệu: Mặc dù không phổ biến như cơ sở dữ liệu quan hệ hay NoSQL, XML đôi khi cũng được sử dụng như một cơ sở dữ liệu đơn giản (native XML database) hoặc để lưu trữ dữ liệu có cấu trúc phức tạp, phân cấp trong các tệp.

Như bạn thấy, ứng dụng của XML rất đa dạng, từ cấu hình phần mềm đơn giản đến các giao thức trao đổi dữ liệu phức tạp và định dạng tài liệu phổ biến. Hiểu về XML giúp bạn làm việc hiệu quả hơn với nhiều công nghệ khác nhau.

Cách thức hoạt động và cú pháp cơ bản của XML (Kèm ví dụ)
Cách thức hoạt động và cú pháp cơ bản của XML (Kèm ví dụ)

So sánh XML với JSON và HTML: Nên dùng khi nào?

Khi làm việc với dữ liệu và web, bạn thường xuyên phải lựa chọn giữa các định dạng khác nhau. XML, JSON và HTML là ba cái tên rất phổ biến, nhưng chúng phục vụ các mục đích khác nhau và có những ưu nhược điểm riêng. Hiểu rõ sự khác biệt giúp bạn đưa ra quyết định đúng đắn cho dự án của mình.

XML vs JSON (JavaScript Object Notation):

Đây là cuộc đối đầu thường thấy nhất trong thế giới trao đổi dữ liệu hiện đại, đặc biệt là với các API web.

  • Mục đích: Cả hai đều dùng để cấu trúc và trao đổi dữ liệu.
  • Cú pháp:
    • XML: Sử dụng thẻ mở/đóng (<tag>...</tag>) và thuộc tính. Cú pháp dài dòng hơn (verbose).
    • JSON: Sử dụng cặp khóa-giá trị ("key": value) và các mảng ([...]). Cú pháp ngắn gọn, gần gũi với cấu trúc đối tượng JavaScript.
  • Khả năng đọc: XML thường dễ đọc hơn với con người đối với các cấu trúc phức tạp nhờ thẻ tự mô tả. JSON có thể dễ đọc hơn với dữ liệu đơn giản.
  • Phân tích (Parsing): JSON thường được phân tích nhanh hơn và dễ dàng hơn trong môi trường JavaScript (vì nó là một tập con của JavaScript) và nhiều ngôn ngữ khác. XML parser phức tạp hơn một chút.
  • Tính năng:
    • XML: Hỗ trợ namespaces (không gian tên) để tránh xung đột tên thẻ, hỗ trợ comments (chú thích), hỗ trợ thuộc tính, có các tiêu chuẩn mạnh mẽ cho việc xác thực cấu trúc (Schema, DTD).
    • JSON: Không hỗ trợ namespaces, comments (mặc dù một số trình phân tích cho phép), hay thuộc tính theo cách của XML. Việc xác thực schema ít chuẩn hóa hơn XML.
  • Khi nào dùng:
    • Dùng XML khi: Cần cấu trúc dữ liệu phức tạp với namespaces, cần xác thực schema nghiêm ngặt, tích hợp với các hệ thống cũ (legacy systems) sử dụng SOAP/XML, cần lưu trữ tài liệu (document-centric data), cần chú thích trong dữ liệu.
    • Dùng JSON khi: Phát triển API web hiện đại (RESTful APIs), cần hiệu suất phân tích nhanh, làm việc nhiều với JavaScript, cấu trúc dữ liệu tương đối đơn giản, ưu tiên sự ngắn gọn.

XML vs HTML (HyperText Markup Language):

Sự nhầm lẫn giữa XML và HTML khá phổ biến vì cả hai đều là ngôn ngữ đánh dấu (markup languages).

  • Mục đích:
    • XML: Được thiết kế để mang/lưu trữ/mô tả dữ liệu. Nó tập trung vào dữ liệu là gì.
    • HTML: Được thiết kế để hiển thị dữ liệu trên trình duyệt web. Nó tập trung vào dữ liệu trông như thế nào.
  • Thẻ (Tags):
    • XML: Các thẻ do người dùng tự định nghĩa (ví dụ: <sach>, <tac_gia>). Bạn phải định nghĩa thẻ của riêng mình.
    • HTML: Có một bộ thẻ được định nghĩa trước với ý nghĩa cụ thể cho trình duyệt (ví dụ: <p>, <h1>, <img>, <a>).
  • Tính chặt chẽ: XML yêu cầu cú pháp rất chặt chẽ (phải có thẻ đóng, phân biệt hoa/thường, lồng nhau đúng). HTML linh hoạt hơn, nhiều trình duyệt sẽ cố gắng hiển thị ngay cả khi mã HTML có lỗi.

Khi nào dùng:

  • Dùng XML: Khi bạn cần định nghĩa cấu trúc dữ liệu của riêng mình để lưu trữ hoặc trao đổi.
  • Dùng HTML: Khi bạn cần tạo cấu trúc nội dung để hiển thị trên một trang web.

Bạn đã bao giờ băn khoăn nên chọn XML vs JSON cho dự án API của mình chưa? Việc lựa chọn phụ thuộc rất nhiều vào yêu cầu cụ thể của hệ thống bạn đang xây dựng.

Ứng dụng phổ biến của XML trong thực tế
Ứng dụng phổ biến của XML trong thực tế

Kết luận: Tầm quan trọng của XML hiện nay

Qua những phân tích chi tiết từ XML là gì, cấu trúc, đặc điểm, cú pháp đến các ứng dụng của XML và so sánh với JSON, HTML, chúng ta có thể thấy Ngôn ngữ đánh dấu XML vẫn giữ một vai trò không thể phủ nhận trong thế giới công nghệ, mặc dù không còn ở đỉnh cao như trước đây trong lĩnh vực API web.

Sức mạnh của XML nằm ở khả năng định nghĩa cấu trúc dữ liệu một cách linh hoạt và chặt chẽ thông qua các thẻ tùy chỉnh, tính tự mô tả cao, và khả năng độc lập nền tảng. Những đặc điểm này làm cho nó trở thành lựa chọn lý tưởng cho các tác vụ như cấu hình ứng dụng phức tạp, trao đổi dữ liệu trong các hệ thống doanh nghiệp đòi hỏi tính chính xác và xác thực cao (thông qua Schema/DTD), và làm nền tảng cho nhiều định dạng tài liệu quan trọng như RSS, SVG hay Office Open XML.

Trong khi JSON đã chiếm ưu thế trong các API web hiện đại nhờ sự đơn giản và hiệu quả khi làm việc với JavaScript, XML vẫn là công cụ không thể thay thế trong nhiều kịch bản khác. Việc học XML không chỉ giúp bạn hiểu rõ hơn về cách dữ liệu được cấu trúc và trao đổi mà còn trang bị cho bạn kỹ năng cần thiết để làm việc với vô số hệ thống và công nghệ vẫn đang dựa vào nó.

Tại WiWeb, chúng tôi thường xuyên làm việc với các hệ thống và dữ liệu đa dạng, và kinh nghiệm cho thấy việc hiểu rõ cả XML và JSON là điều cần thiết để đưa ra giải pháp tối ưu cho khách hàng. XML không phải là một công nghệ lỗi thời, mà là một công cụ mạnh mẽ với những ứng dụng riêng biệt và quan trọng.

Bạn nghĩ sao về tương lai của XML? Liệu nó có tiếp tục đóng vai trò quan trọng trong các dự án của bạn không? Hãy chia sẻ suy nghĩ của bạn nhé! Và nếu bạn cần tư vấn về thiết kế website hay các giải pháp liên quan đến xử lý dữ liệu, đừng ngần ngại liên hệ với WiWeb tại wiweb.vn.

So sánh XML với JSON và HTML: Nên dùng khi nào?
So sánh XML với JSON và HTML: Nên dùng khi nào?

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *