✨XML

XML

XML (viết tắt từ , tức "Ngôn ngữ đánh dấu mở rộng") là ngôn ngữ đánh dấu với mục đích chung do W3C đề nghị, để tạo ra các ngôn ngữ đánh dấu 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ác nhau. Mục đích 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à các hệ thống được kết nối với Internet. Các 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, cho phép các chương trình sửa đổi và kiểm tra hợp lệ bằng các ngôn ngữ này mà không cần có hiểu biết trước về hình thức của chúng.

Lịch sử

Vào giữa những năm 1990, các chuyên gia SGML đã có kinh nghiệm với World Wide Web (vẫn còn khá mới vào thời đó). Họ tin tưởng rằng SGML có thể cung cấp giải pháp cho các 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 đời mang tên XML

Đặc điểm

XML cung cấp 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ăn bản, mọi thông tin đều thể hiện dưới dạng text, chen giữa là các thẻ đánh dấu (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 các dữ liệu ký tự, các phần tử dùng để chứa dữ liệu, và các thuộc tính của các phần tử đó. Về mặt đó, XML tương tự với các biểu thức S (S-expression) của ngôn ngữ lập trình LISP ở chỗ chúng đều mô tả các cấu trúc cây mà trong đó mỗi nút 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à các ký tự theo định nghĩa của Universal Character Set (Bộ ký tự toàn cầu). Các ký tự được kết hợp theo các 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 các ký tự thuộc tài liệu, được mã hóa dưới dạng một chuỗi các bit và lưu trữ trong một tệp văn bản (text file).

Các tệp XML có thể dùng cho nhiều loại dữ liệu đa phương tiện. [http://www.ietf.org/rfc/rfc3023.txt RFC3023] định nghĩa các 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 các 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 chóng. Trước XML, có rất ít ngôn ngữ mô tả dữ liệu với các đặc điểm đa năng, thân thiện với giao thức Internet, dễ học và dễ tạo. Thực tế, đa số các đị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 vì chuỗi ký tự) khó dùng chung giữa các ứng dụng phần mềm khác nhau hay giữa các hệ nền (platform) khác nhau. Việc tạo và bảo trì trên các trình soạn thảo thông dụng lại càng khó khăn.

Bằng cách cho phép các tên dữ liệu, cấu trúc thứ bậc được phép, và ý nghĩa của các phần tử và thuộc tính có tính chất mở và có thể được định nghĩa bởi một giản đồ tùy biến được, XML cung cấp một cơ sở cú pháp cho việc tạo lập các ngôn ngữ đánh dấu dựa XML theo yêu cầu. Cú pháp chung của các ngôn ngữ đó là cố định — các tài liệu phải tuân theo các quy tắc chung của XML, bảo đảm rằng tất cả các phần mềm hiểu XML ít ra cũng phải có khả năng đọc (phân tích cú pháp - parse) và hiểu bố cục tương đối của thông tin trong các tài liệu đó. Giản đồ chỉ bổ sung một tập các ràng buộc cho các quy tắc cú pháp. Các giản đồ thường hạn chế tên của phần tử và thuộc tính và các cấu trúc thứ bậc được phép, ví dụ, chỉ cho phép 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 biệt giữa XML và HTML. HTML có một bộ các 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ề việc nó được sử dụng như thế nào. Mặc dù XML về cơ bản là dạng text, các phần mềm với chức năng trừu tượng hóa nó thành các định dạng khác giàu thông tin hơn đã nhanh chóng xuất hiện, quá trình trừu tượng hóa này được thực hiện chủ yếu qua việc sử dụng các 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 đó, 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 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 điểm trên, công nghệ này còn cần phải được xem xét kỹ bởi lẽ trong quá 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 cao, nhưng cũng đáng để những người sử dụng phải có những cân nhắc kỹ càng hơn.

Sơ lược về cú pháp

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ên>

Bánh mì cơ bản Bột mì Men Nước Muối Trộn tất cả các nguyên liệu với nhau và nhào kĩ Phủ một mảnh vải, ủ một tiếng đồng hồ trong phòng ấm. Nhào lại, đổ vào khuôn, cho vào lò nướng.

Dòng đầu tiên 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 có thể chứa thông tin về mã hóa ký tự và các phụ thuộc bên ngoài.

Phần còn lại của tài liệu này chứa các phần tử lồng nhau, một số phần tử trong đó có các thuộc tínhnội dung. Một phần tử thường bao gồm hai thẻ (tag), một thẻ bắt đầu và một thẻ kết thúc, có thể bao quanh văn bản và các phần tử khác. Thẻ bắt đầu bao gồm một cái tên đặt trong một cặp ngoặc nhọn, như "<bước>"; thẻ kết thúc bao gồm 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ước>". Nội dung của phần tử là tất cả những gì nằm giữa thẻ bắt đầu và thẻ kết thúc, bao gồm văn bản và các 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:

Nhào lại, đổ vào khuôn, cho vào lò nướng.

Bên cạnh nội dung, một phần tử có thể chứa các thuộc tính — các 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 mỗi phần tử.

Bột mì

Trong ví dụ này, phần tử _nguyênliệ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 các phần tử, tại cấp độ đánh dấu, tên và giá trị của các thuộc tính cũng chỉ là dữ liệu text — các 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à các chuỗi ký tự mà tác giả tài liệu có thể dùng để biểu diễn những thứ đó.

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

Trộn tất cả các nguyên liệu với nhau và nhào kĩ Phủ một mảnh vải, ủ một tiếng đồng hồ trong phòng ấm. Nhào lại, đổ vào khuôn, cho vào lò nướng.

Trong đó, phần tử _chỉdẫn chứa ba phần tử bước. XML đòi hỏi rằng các phần tử phải được lồng nhau một cách đúng đắn — các 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ì các phần từ emstrong xen vào nhau:

Normal emphasized strong emphasized strong

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:

<đồ vật>Đồ vật thứ nhất</đồ vật> <đồ vật>Đồ vật thứ hai</đồ vật>

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

:

:

XML cung cấp hai phương pháp biểu diễn các ký tự đặc biệt: các tham chiếu thực thể (entity reference) và các 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ó bao gồm 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 "AT&T":

: <tên-công-ty>AT&T</tên-công-ty>

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

]> ©right-notice;

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:

:

Copyright © 2006, XYZ Enterprises

Các tham chiếu ký tự số trông giống như các thực thể. Nhưng thay cho một cái 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 các 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ụ "AT&T" 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 &):

AT&T AT&T

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

👁️ 0 | 🔗 | 💖 | ✨ | 🌍 | ⌚
**XML** (viết tắt từ , tức "**Ngôn ngữ đánh dấu mở rộng**") là ngôn ngữ đánh dấu với mục đích chung do W3C đề nghị, để tạo ra các ngôn ngữ đánh dấu khác. Đây
**Office Open XML** (thường được gọi tắt là **OOXML** hay **Open XML**) là một định dạng tập tin thuộc họ XML dùng để lưu những tài liệu điện tử như bức thư, bản báo cáo,
**Tấn công thực thể bên ngoài XML**, hay đơn giản là **tấn công XXE**, là một kiểu tấn công chống lại một ứng dụng phân tích cú pháp đầu vào XML. Cuộc tấn công này
Đèn pin siêu sáng XML-T6 nhôm nguyên khối chiếu xa chống nước cao cấp MIN166 Đèn pin siêu sáng XML-T6 là sản phẩm được thiết kế tiện dụng, thông minh và gọn nhẹ có phạm
Đèn Pin Mini Siêu Sáng XML-T6 miDoctor - Chính Hãng Thích hợp cho các hoạt động bảo vệ, tuần tra quan sát, cứu hộ cứu nạn Có độ sáng cao với khả năng chiếu sáng
Đèn pin siêu sáng đội đầu 3 bóng led XML-T6 siêu sáng chống nước cao cấp MIN168 - Đèn pin siêu sáng đội đầu 3 bóng siêu sáng T6 với 3 LED là sản phẩm
**RSS** là một định dạng tập tin thuộc họ XML dùng trong việc chia sẻ tin tức Web (_Web syndication_) được dùng bởi nhiều website tin tức và weblog. Công nghệ của RSS cho phép
**Java API for XML Processing**, hay **JAXP**, là một trong các API cho lập trình Java XML. Nó cung cấp khả năng kiểm chứng và phân tích các tài liệu XML. Hai loại giao diện
**SAX** là các API phân tách truy xuất tuần tự đến tài liệu XML. **Sax** cung cấp một cơ chế cho việc đọc dữ liệu từ một tài liệu XML. Nó là một thay thế
nhỏ|jEdit cho chỉnh sửa XML và XSLT **XSLT** (viết tắt của tiếng Anh _XSL Transformations_) là một ngôn ngữ dựa trên XML dùng để biến đổi các tài liệu XML. Tài liệu gốc thì không
**AJAX** (tiếng Anh: "Asynchronous JavaScript and XML" - nghĩa là "JavaScript và XML không đồng bộ") là một nhóm các công nghệ phát triển web được sử dụng để tạo các ứng dụng web động
**Document Object Model** (Mô hình Đối tượng Tài liệu), viết tắt là **DOM**, là một giao diện lập trình ứng dụng (API). Thông thường, DOM có dạng một cây cấu trúc dữ liệu, được dùng
**MathML** (viết tắt cho **Mathematical Markup Language**, _Ngôn ngữ Đánh dấu Toán học_) là một ứng dụng XML nhằm viết ký hiệu và công thức toán học trên máy tính. Mục đích của ngôn ngữ
**XBEL**, hay còn gọi là **Ngôn ngữ trao đổi đánh dấu trang XML**, là một chuẩn mở XML dành cho việc chia sẻ Internet các URI (Uniform Resource Identifier), cũng như các Đánh dấu trang
**cXML** (**Ngôn ngữ Đánh dấu Mở rộng Thương mại**) là một giao thức máy tính, được tạo bởi Ariba, có khuynh hướng dùng cho các tài liệu thương mại giữa các ứng dụng mua sắm,
**SVG** (viết tắt của **Scalable Vector Graphics**) là một ngôn ngữ đánh dấu (_markup language_) XML và dùng để miêu tả các hình ảnh đồ họa véc tơ hai chiều, tĩnh và hoạt hình, thường
**SOAP** (viết tắt từ tiếng Anh _Simple Object Access Protocol_) là một giao thức do W3C định nghĩa . SOAP áp dụng XML để xác định dữ liệu dạng văn bản (plain text) qua HTTP
**XBL** (_XML Binding Language_) là một ngôn ngữ đánh dấu dựa trên XML để thay đổi hành vi của các thành tố điều khiển đồ họa XUL. Nó được tạo ra bởi Netscape vào cuối
+ĐẶC ĐIỂM NỔI BẬT: Đèn Pin Siêu Sáng Cao Cấp Mini T1 3 Chế Độ Sáng Full Box Đèn nằm nhỏ gọn trong lòng bàn tay Đọ sáng tối đa 1000 Lumen Chống nổ Tiết
phải|Biểu trưng của Jabber **Extensible Messaging and Presence Protocol** (**XMPP**), trước đây là **Jabber**, là giao thức mở và dựa trên nền tảng XML dùng trong nhắn tin nhanh (_instant messaging_) và thông tin hiện
**Framework Mô Tả Tài nguyên** (**RDF**) là một nhóm các đặc tả của tổ chức World Wide Web Consortium (W3C) có nguồn gốc được thiết kế như là mô hình dữ liệu siêu liên kết.
**TMX** (Viết tắt của **Translation Memory eXchange** tạm dịch là **định dạng phiên dịch trao đổi bộ nhớ **) là một định dạng chuẩn XML mở dành cho việc trao đổi dữ liệu về bộ
**Ngôn ngữ đánh dấu địa lý** (GML) là một dạng ngôn ngữ dựa trên nền XML được định nghĩa bởi **Tổ chức Không gian Địa lý** (OGC). GML được coi là mô hình ngôn ngữ
MÔ TẢ SẢN PHẨMKHOÁNG HA CĂNG BÓNG SÁNG DA JAPAN sp thuộc tập đoàn TEVA SX MAKE IN : Japan Dùng để Cấy dưới da , Bôi , Lăn kim , Vi Kim... 1 liệu
**Microsoft Word** là một phần mềm xử lý văn bản được phát triển bởi Microsoft. Nó được phát hành lần đầu vào ngày 25 tháng 10 năm 1983, dưới tên 'Multi-Tool Word' cho hệ thống
Apache **Log4j** là một trình ghi nhật ký trên nền tảng Java. Ban đầu, Log4j được phát triển bởi Ceki Gülcü và hiện nay là một dự án của Quỹ Phần mềm Apache. Log4j là
**Microsoft Office** (bây giờ là Microsoft 365) là tên của một bộ ứng dụng văn phòng gồm các chương trình, máy chủ, và dịch vụ phát triển bởi Microsoft, được giới thiệu lần đầu bởi
thumb|Một ví dụ về lấy dữ liệu đầu ra từ truy vấn cơ sở dữ liệu SQL. **Cơ sở dữ liệu** () là một tập hợp các dữ liệu có tổ chức liên quan đến
**Ngôn ngữ truy vấn tích hợp** (tiếng Anh: _Language Integrated Query_, viết tắt _LINQ_) là một thành phần của .NET và .NET Framework cung cấp khả năng truy vấn cấp độ ngôn ngữ và cùng
**GS1 EDI** là một bộ tiêu chuẩn nhắn tin điện tử toàn cầu cho các tài liệu kinh doanh được sử dụng trong Trao đổi dữ liệu điện tử (EDI). Các tiêu chuẩn được phát
thumb|Minh họa mã nguồn [[Java (programming language)|Java với comment **mở đầu** được biểu thị bằng màu **đỏ** và comment **nội dòng** bằng màu **lục**. **Mã chương trình** là bằng màu **lam**.]]Trong lập
**Web 3.0** (Semantic Web - mạng ngữ nghĩa) được Hiệp hội World Wide Web (W3C) xác định như một thế hệ web với những tính năng mới chú trọng vào việc sử dụng các định
nhỏ|Java 2 **Java 2 Platform, Enterprise Edition** (_Nền tảng Java, phiên bản 2 - phiên bản công nghiệp_ là công nghệ của Sun Microsystems) hay **Java EE** (gọi tắt là J2EE) là một nền lập
**Microsoft Office 2007** (chính thức được gọi là **2007 Microsoft Office System**) là một phiên bản Windows của Microsoft Office System, bộ ứng dụng văn phòng Microsoft. Trước đây được biết đến như **Office 12**
**Web API** là giao diện lập trình ứng dụng cho máy chủ web hoặc trình duyệt web. Đây là khái niệm phát triển web, thường giới hạn ở phía máy khách (client-side) của ứng dụng
**Kiểu phương tiện** (trước đây gọi là **kiểu MIME**) là định danh hai phần cho định dạng file và nội dung định dạng được truyền trên Internet. Internet Assigned Numbers Authority (IANA) là cơ quan
**Jakarta Server Pages** (**JSP**; trước đây là **JavaServer Pages**) là một bộ công nghệ giúp các nhà phát triển phần mềm tạo ra các trang web động dựa trên HTML, XML, SOAP hay các loại
Đây là danh sách **Phần mềm mã nguồn mở**: là phần mềm máy tính được cấp phép giấy phép mã nguồn mở. Bài viết này không có tham vọng liệt kê tất cả những phần
ODF là viết tắt của **Open Document Format for Office Applications** (hay còn gọi là **OpenDocument** trong tiếng Anh) là một định dạng tập tin thuộc họ XML bị nén Zip dùng để lưu những
**Gói ứng dụng Android** hay **Android Package** có phần mở rộng file **apk** là định dạng file được hệ điều hành Android và một số hệ điều hành dựa trên Android khác sử dụng để
nhỏ|Một tập tin bitmap **Định dạng tập tin** là một cách chuẩn để thông tin được mã hóa trong việc lưu trữ trong các file. Nó chỉ định cách các bit được sử dụng để
Mô tả Factory method bằng [[Unified Modeling Language|UML]] **Factory method**, đầy đủ là **Factory method pattern**, là thiết kế mẫu hướng đối tượng trong việc thiết kế phần mềm cho máy tính, nhằm giải quyết
**SGML** (Viết tắt của Standard Generalized Markup Language), một hệ thống tổ chức và gắn thẻ yếu tố của một tài liệu. SGML được phát triển và tiêu chuẩn hóa bởi Tổ chức Tiêu chuẩn
**Microsoft Word Viewer** là chương trình phần mềm miễn phí đã ngừng cung cấp cho Microsoft Windows có thể hiển thị và in các tài liệu Microsoft Word. Word Viewer cho phép sao chép văn
**Trình quản lý bố cục** (tiếng Anh: **Layout manager**) là những thành phần phần mềm được sử dụng trong bộ công cụ widget, dùng để bố trí các thành tố điều khiển đồ họa theo
nhỏ|Các trang web được viết bằng ngôn ngữ đánh dấu siêu văn bản (HTML). **Siêu văn bản** (tiếng Anh: _hypertext_) là loại văn bản tích hợp nhiều dạng dữ liệu khác nhau như: văn bản,
**Windows Contacts** là trình quản lý thông tin liên lạc trong Windows Vista thay thế phần lớn các chức năng của Windows Address Book. Windows Mail được tích hợp với chương trình này. Windows Contacts
nhỏ|phải|**Dia** chạy trong môi trường [[XFCE.]] **Dia** là phần mềm tự do hỗ trợ vẽ các biểu đồ vec tơ, với các tính năng tương tự như Microsoft Visio. ## Hỗ trợ nhiều định dạng
**Microsoft InfoPath** (tên đầy đủ Microsoft Office InfoPath) là một ứng dụng được sử dụng để phát triển XML nhập dữ liệu dựa trên hình thức, ban đầu được phát hành như là một phần
**WebDAV** là viết tắt của cụm từ **Web-based Distributed Authoring and Versioning** (tạm dịch **_hệ thống quản lý chứng thực và phiên bản dựa trên môi trường Web_**) là một trong những sáng chế của