XML (viết tắt từ tiếng Anh: eXtensible Markup Language, tức “Ngôn ngữ ghi lại mở rộng“) là ngôn ngữ ghi lại với mục đích chung do W3C đề nghị, để tạo ra những ngôn ngữ ghi lại khác. Đây là một tập con đơn giản của SGML, có khả năng mô tả nhiều loại dữ liệu không giống nhau. Mục đích chính của XML là đơn giản hóa việc san sẻ dữ liệu giữa những hệ thống không giống nhau, đặc biệt là những hệ thống được kết nối với Internet. những ngôn ngữ dựa trên XML (Ví dụ: RDF, RSS, MathML, XHTML, SVG, GML và cXML) được định nghĩa theo cách thông thường, được chấp nhận những chương trình sửa đổi và kiểm tra hợp lệ bằng những ngôn ngữ này mà không cần thiết phải có hiểu biết trước về hình thức của chúng.

Lịch sử[sửa | sửa mã nguồn]

Vào giữa những năm 1990, những Chuyên viên SGML đã có kinh nghiệm với World Wide Web (vẫn còn đấy đó khá mới vào thời đó). Họ tin tưởng rằng SGML hoàn toàn có thể cung ứng giải pháp cho những vấn đề mà Web đang gặp phải. Jon Bosak đưa ra ý kiến W3C nên tài trợ một chương trình mang tên “SGML trên Web”. Sau thời gian này một tập con của SGML ra mắt mang tên XML

đặc trưng[sửa | sửa mã nguồn]

XML cung ứng một phương tiện dùng văn bản (text) để mô tả thông tin và áp dụng một cấu trúc kiểu cây cho thông tin đó. Tại mức cơ bản, mọi thông tin đều thể hiện dưới dạng text, chen giữa là những thẻ ghi lại (markup) với nhiệm vụ ký hiệu sự phân chia thông tin thành một cấu trúc có thứ bậc của những dữ liệu ký tự, những phần tử dùng để chứa dữ liệu, và những thuộc tính của những phần tử đó. Về mặt đó, XML tương tự như với những biểu thức S (S-expression) của ngôn ngữ lập trình LISP ở chỗ chúng đều mô tả những cấu trúc cây mà Trong số đó mỗi nút hoàn toàn có thể có một danh sách tính chất của riêng mình.

Đơn vị cơ sở của XML là những ký tự theo định nghĩa của Universal Character Set (Bộ ký tự toàn cầu). những ký tự được phối hợp theo những tổ hợp chuỗi hợp lệ để tạo thành một tài liệu XML. Tài liệu này gồm một hoặc nhiều thực thể, mỗi thực thể thường là một phần nào đó của những ký tự thuộc tài liệu, được mã hóa dưới dạng một chuỗi những bit và lưu trữ trong một tệp văn bản (text file).

những tệp XML hoàn toàn có thể dùng cho nhiều loại dữ liệu đa phương tiện. RFC3023 định nghĩa những loại “application/xml” và “text/xml”, với ý rằng dữ liệu được biểu diễn bằng XML mà không nói gì đến ngữ nghĩa của dữ liệu.

Sự phổ biến của những phần mềm soạn thảo văn bản (word processor) đã hỗ trợ việc soạn thảo và bảo trì tài liệu XML một cách nhanh gọn. Trước XML, có rất ít ngôn ngữ mô tả dữ liệu với những đặc trưng đa năng, thân thiện với giao thức Internet, dễ học và dễ tạo. trong thực tiễn, đa số những định dạng trao đổi dữ liệu thời đó đều chuyện dụng, có tính độc quyền, và có định dạng nhị phân (chuỗi bit thay cho chuỗi ký tự) khó dùng chung giữa những ứng dụng phần mềm không giống nhau hay giữa những hệ nền (platform) không giống nhau. Việc tạo và bảo trì trên những trình soạn thảo thông dụng lại càng khó khăn.

bằng phương pháp được chấp nhận những tên dữ liệu, cấu trúc thứ bậc được phép, và ý nghĩa sâu sắc của những phần tử và thuộc tính có tính chất mở và hoàn toàn có thể được định nghĩa bởi một giản đồ tùy biến được, XML cung ứng một cơ sở cú pháp cho việc tạo lập những ngôn ngữ ghi lại dựa XML theo yêu cầu. Cú pháp chung của những ngôn ngữ đó là cố định — những tài liệu phải tuân theo những quy tắc chung của XML, bảo đảm rằng toàn bộ những phần mềm hiểu XML ít ra cũng phải có khả năng đọc (phân tích cú phápparse) và hiểu bố cục tương đối của thông tin trong những tài liệu đó. Giản đồ chỉ bổ sung một tập những ràng buộc cho những quy tắc cú pháp. những giản đồ thường hạn chế tên của phần tử và thuộc tính và những cấu trúc thứ bậc được phép, ví dụ, chỉ được chấp nhận một phần tử tên ‘ngày sinh’ chứa một phần tử tên ‘ngày’ và một phần tử có tên ‘tháng’, mỗi phần tử phải chứa đúng một ký tự.
Đây là điểm khác lạ giữa XML và HTML. HTML có một bộ những phần tử và thuộc tính không mềm dẻo, chỉ có một tác dụng và nói chung là không thể dùng cho mục đích khác.

XML không hạn chế về sự việc nó được sử dụng thế nào. Mặc dù XML về cơ bản là dạng text, những phần mềm với tính năng trừu tượng hóa nó thành những định dạng khác giàu thông tin hơn đã nhanh gọn xuất hiện, quy trình trừu tượng hóa này được tiến hành chủ yếu qua việc sử dụng những giản đồ định hướng kiểu dữ liệu (datatype-oriented schema) và khuôn mẫu lập trình hướng đối tượng (mà Trong số đó, mỗi tài liệu XML được thao tác như là một đối tượng). Những phần mềm như vậy hoàn toàn có thể coi XML như là dạng text đã được tuần tự hóa chỉ khi nó cần truyền dữ liệu qua mạng.

Ngoài những đặc trưng trên, công nghệ này còn cần phải được đánh giá kỹ bởi lẽ trong quy trình thao tác và truyền dữ liệu, nó đã được thống kê và ghi nhận tỷ lệ sai sót, mất dữ liệu dao động từ 5 – 7%. Tuy con số này không đảm bảo, nhưng cũng đáng để những người tiêu dùng phải có những suy xét kỹ lưỡng hơn. [cần dẫn nguồn]

Sơ lược về cú pháp[sửa | sửa mã nguồn]

Cú pháp XML cơ bản cho một phần tử là

<tên thuộc_tính="giá trị">nội dung</tênvàgt;
<?xml version="1.0" encoding="UTF-8"?>
<công_thức_nấu_ăn tên="bánh mì" thời_gian_chuẩn_bị="5 phút" thời_gian_nấu="3 tiếng">
 <titlevàgt;Bánh mì cơ bản</titlevàgt;
 <nguyên_liệu lượng="3" đơn_vị="ca">Bột mì</nguyên_liệuvàgt;
 <nguyên_liệu lượng="7" đơn_vị="gram">Men</nguyên_liệuvàgt;
 <nguyên_liệu lượng="1.5" đơn_vị="ca" trạng_thái="ấm">Nước</nguyên_liệuvàgt;
 <nguyên_liệu lượng="1" đơn_vị="thìa cafe">Muối</nguyên_liệuvàgt;
 <chỉ_dẫnvàgt;
 <bướcvàgt;Trộn toàn bộ những nguyên liệu với nhau và nhào kĩ</bướcvàgt;
 <bướcvàgt;Phủ một mảnh vải, ủ một tiếng đồng hồ trong phòng ấm.</bướcvàgt;
 <bướcvàgt;Nhào lại, đổ vào khuôn, cho vào lò nướng.</bướcvàgt;
 </chỉ_dẫnvàgt;
</công_thức_nấu_ănvàgt;

Dòng thứ nhất là Khai báo XML (XML declaration): đó là một dòng không bắt buộc, với nhiệm vụ thông báo phiên bản XML đang được sử dụng (thường là phiên bản 1.0), và còn hoàn toàn có thể chứa thông tin về mã hóa ký tự và những phụ thuộc bên phía ngoài.

Phần sót lại của tài liệu này chứa những phần tử lồng nhau, một số phần tử Trong số đó có những thuộc tínhnội dung. Một phần tử thường gồm có hai thẻ (tag), một thẻ bắt đầu và một thẻ kết thúc, hoàn toàn có thể xung quanh văn bản và những phần tử khác. Thẻ bắt đầu gồm có một chiếc tên đặt trong một cặp ngoặc nhọn, như “<bướcvàgt;“; thẻ kết thúc gồm có chính cái tên đó đặt trong một cặp ngoặc nhọn, với một dấu gạch chéo đứng trước, như “</bướcvàgt;“. Nội dung của phần tử là toàn bộ những gì nằm giữa thẻ bắt đầu và thẻ kết thúc, gồm có văn bản và những phần tử (con) khác. Dưới đây là một phần tử XML hoàn chỉnh, với thẻ bắt đầu, nội dung văn bản, và thẻ kết thúc:

 <bướcvàgt;Nhào lại, đổ vào khuôn, cho vào lò nướng.</bướcvàgt;

Bên cạnh nội dung, một phần tử hoàn toàn có thể chứa những thuộc tính — những cặp tên – giá trị được đặt trong thẻ bắt đầu, ngay sau tên phần tử. Giá trị của thuộc tính phải được đặt trong cặp nháy đơn hoặc nháy kép, mỗi tên thuộc tính chỉ được xuất hiện một lần trong những phần tử.

 <nguyên_liệu lượng="3" đơn_vị="ca">Bột mì</nguyên_liệuvàgt;

Trong ví dụ này, phần tử nguyên_liệu có hai thuộc tính: lượng với giá trị “3”, và đơn vị với giá trị “ca”. Trong cả hai trường hợp, cũng như tên và nội dung của những phần tử, tại cấp độ ghi lại, tên và giá trị của những thuộc tính cũng chỉ là dữ liệu text — những giá trị “3” và “ca” không phải một số lượng và một đơn vị đo lường mà chỉ là những chuỗi ký tự mà tác giả tài liệu hoàn toàn có thể dùng để biểu diễn những thứ đó.

Ngoài văn bản, những phần tử còn hoàn toàn có thể chứa những phần tử khác:

 <chỉ_dẫnvàgt;
 <bướcvàgt;Trộn toàn bộ những nguyên liệu với nhau và nhào kĩ</bướcvàgt;
 <bướcvàgt;Phủ một mảnh vải, ủ một tiếng đồng hồ trong phòng ấm.</bướcvàgt;
 <bướcvàgt;Nhào lại, đổ vào khuôn, cho vào lò nướng.</bướcvàgt;
 </chỉ_dẫnvàgt;

Trong số đó, phần tử chỉ_dẫn chứa ba phần tử bước. XML đòi hỏi rằng những phần tử phải được lồng nhau một cách đúng đắn — những phần tử không được có phần xen vào nhau. Ví dụ, đoạn dưới đây không phải XML định dạng đúng (well-formed XML) vì những phần từ emstrong xen vào nhau:

 <!-- SAI! ĐỊNH DẠNG KHÔNG ĐÚNG! -->
 <pvàgt;Normal <emvàgt;emphasized <strongvàgt;strong emphasized</emvàgt; strong</strongvàgt;</pvàgt;

Mỗi tài liệu XML phải có đúng một phần tử gốc tại bậc trên cùng (còn gọi là phần tử văn bản), do đó đoạn sau cũng sẽ là một tài liệu XML định dạng sai:

<?xml version="1.0" encoding="UTF-8"?>
<!-- SAI! ĐỊNH DẠNG KHÔNG ĐÚNG! -->
<đồ vật>Đồ vật thứ nhất</đồ vậtvàgt;
<đồ vật>Đồ vật thứ hai</đồ vậtvàgt;

XML cung ứng cú pháp đặc biệt để biểu diễn một phần tử với nội dung rỗng. thay cho viết một thẻ bắt đầu và một thẻ kết thúc ngay sau đó, tài liệu hoàn toàn có thể chứa thẻ phần tử rỗng mà Trong số đó dấu gạch chéo đứng ngay sau tên phần tử. Hai ví dụ sau là tương đương về tính năng:

<foovàgt;</foovàgt;
</divvàgt;
:<source lang="xml" enclose="div" style="font-size:1.2em;" >
<foo />

XML cung ứng hai phương pháp biểu diễn những ký tự đặc biệt: những tham chiếu thực thể (entity reference) và những tham chiếu ký tự số (numeric character reference).

Trong XML, một thực thể (entity) là một thân dữ liệu được đặt tên với dữ liệu thường là text, chẳng hạn một ký tự đặc biệt.

Một tham chiếu thực thể là một ký hiệu đại diện cho thực thể đó. Nó gồm có tên của thực thể với dấu (“&“) đứng trước và một dấu chấm phảy (“;“) đứng sau. XML có năm thực thể đã được khai báo trước:

  • &amp; (&)
  • &lt; (<)
  • &gt; (>)
  • &apos; (‘)
  • &quot; (“)

Dưới đây là một ví dụ sử dụng một thực thể XML khai báo trước để biểu diễn dấu & trong tên “ATvàamp;T”:

<tên-công-tyvàgt;AT&amp;T</tên-công-tyvàgt;

Nếu cần khai báo thêm những thực thể khác, việc đó được tiến hành tại DTD của tài liệu. tiếp về sau là một ví dụ cơ bản về khai báo thực thể tại một DTD nhỏ nội bộ. những thực thể được khai báo hoàn toàn có thể mô tả những ký tự đơn hay những đoạn văn bản, và hoàn toàn có thể tham chiếu lẫn nhau.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE example [
	<!ENTITY copy "©">
	<!ENTITY copyright-notice "Copyright © 2006, XYZ Enterprises">
]>
<rootvàgt;
	&copyright-notice;
</rootvàgt;

Khi xem tại một trình duyệt thích hợp, tài liệu XML trên sẽ hiện ra như sau:

<rootvàgt; Copyright © 2006, XYZ Enterprises </rootvàgt;

những tham chiếu ký tự số trông giống như những thực thể. Nhưng thay cho một chiếc tên, chúng gồm một ký tự “#” và theo sau là một con số. Con số (theo hệ thập phân hoặc hệ cơ số 16 với tiền tố “x“) đại diện cho một mã hiệu Unicode (Unicode code point), và thường được dùng để đại diện cho những ký tự không dễ gõ trên máy tính, chẳng hạn một chữ cái Ả-rập trong một tài liệu được soạn trên một máy tính châu Âu. Dấu & trong ví dụ “ATvàamp;T” hoàn toàn có thể được biểu diễn như sau (số 38 thập phân và 26 trong hệ cơ số 16 đều đại diện cho giá trị Unicode của dấu &):

<tên-công-tyvàgt;AT&#38;T</tên-công-tyvàgt;
<tên-công-tyvàgt;AT&#x26;T</tên-công-tyvàgt;

Còn có nhiều quy tắc khác thiết yếu cho việc viết những tài liệu XML định dạng đúng, chẳng hạn một tên XML hoàn toàn có thể chứa những ký tự nào, nhưng phần giới thiệu ngắn này chỉ cung ứng những kiến thức và kỹ năng cơ bản để đọc và hiểu được nhiều tài liệu XML.

tìm hiểu thêm[sửa | sửa mã nguồn]

link ngoài[sửa | sửa mã nguồn]

Tài liệu Tiếng Việt[sửa | sửa mã nguồn]

  • 10 điểm nên biết trong XML

Tiếng Anh[sửa | sửa mã nguồn]

Đặc tả[sửa | sửa mã nguồn]

  • Trang chủ về XML tại W3C
  • Đặc tả XML 1.0
  • Đặc tả XML 1.1

Tài liệu cơ bản[sửa | sửa mã nguồn]

  • The XML FAQ
  • XML.com – website thương mại với nhiều bài về những công nghệ XML.
  • Annotated XML Specification
  • Absolute Beginners’ XML Tutorial Lưu trữ 2006-10-15 tại Wayback Machine
  • XML Tutorial for Beginners
  • W3 Schools – Learn XML
  • Introduction to XML Lưu trữ 2006-10-05 tại Wayback Machine
  • XML: Some hyperlinks minus the hype by Philip Wadler
  • Xml and tools for Xml or in Xml

Trình soạn thảo XML[sửa | sửa mã nguồn]

  • Editors Lưu trữ 2006-07-18 tại Wayback Machine danh sách mở
  • Editors Lưu trữ 2006-04-12 tại Wayback Machine Danh sách dài tại xml.com

XML certification[sửa | sửa mã nguồn]

  • JavaRanch XML Certification Discussion Forum Lưu trữ 2006-08-28 tại Wayback Machine

Trình phân tích cú pháp XML[sửa | sửa mã nguồn]

  • Microsoft XML Parser (MSXML) specification
  • Expat XML Parser in C in SourceForge.net
  • Apache Xerces
  • dom4j Open source library for working with XML, XPath and XSLT on the Java platform
  • CookXml XML Parser for Java
  • Liquid XML Parser
  • TinyXml Parser for C++ programmers
  • XimpleWare’s VTD-XML XML Parser in both C and Java
  • Stefan Heymann’s miễn phí XML Parser for Delphi
  • Microsoft’s XML library for the.NET framework
  • XeML.net

Danh sách thư XML[sửa | sửa mã nguồn]

  • XML-DEV Mailing List Lưu trữ 2006-02-18 tại Wayback Machine