Khi nói về ngôn ngữ đánh dấu trong lập trình, chúng ta không có ý ai đang cố gắng nâng giá cái gì. Một đánh dấu (markup) không phải là tăng giá. Đó là cách biểu diễn dữ liệu dùng loại ngôn ngữ kịch bản (scripting language) cụ thể.
Trong hướng dẫn này, chúng ta sẽ thảo luận ngôn ngữ đánh dấu là gì, cách hoạt động, và khi nào dùng. Chúng ta cũng sẽ phân tích ba ngôn ngữ đánh dấu khác nhau và trường hợp sử dụng, để bạn hiểu vững cách markup hoạt động.
Ngôn ngữ Đánh dấu là gì?
Ngôn ngữ đánh dấu là ngôn ngữ máy tính dùng để chú thích (annotate) tài liệu. Các ngôn ngữ này đọc được bởi con người, nghĩa là thường viết bằng từ ngữ tiêu chuẩn, thay vì thuật ngữ kỹ thuật lập trình.
Ngôn ngữ đánh dấu định nghĩa kiểu dáng và cấu trúc tài liệu để máy tính biết bạn muốn tài liệu xuất hiện như thế nào.
Cách nghĩ: markup giống cách giáo viên "chấm" hoặc "chỉnh sửa" (mark up) bài kiểm tra học sinh. Giáo viên viết trên bài nơi học sinh sai để lần sau biết sửa. Thực tế, thuật ngữ ngôn ngữ đánh dấu đến từ plantsetting (sắp chữ), nơi hướng dẫn thiết lập tài liệu được "đánh dấu" cùng tài liệu.
Markup không nhất thiết phải là ngôn ngữ riêng. Trong hai ví dụ cuối, markup vẫn được dùng, nhưng không phải ngôn ngữ đánh dấu. Điều phân biệt markup và ngôn ngữ đánh dấu là ngôn ngữ đánh dấu có bộ quy tắc dùng ngôn ngữ đó. Và thường được máy tính diễn giải. Markup, mặt khác, không có cấu trúc xác định.
ML trong Phát triển Web
Bạn có thể nghe ML nếu từng phát triển trang web. HTML và XML, ví dụ, đều kết thúc bằng ML. Bạn từng tự hỏi ý nghĩa? ML là viết tắt markup language (ngôn ngữ đánh dấu).
Ngôn ngữ đánh dấu dùng rộng rãi trong phát triển web. Chúng dùng mô tả cách tập dữ liệu cụ thể nên được biểu diễn trên tài liệu web.
HTML (HyperText Markup Language) mô tả cấu trúc trang web. XML, mặt khác, mô tả loại dữ liệu cụ thể.
Cách Ngôn ngữ Đánh dấu Hoạt động
Tất cả ngôn ngữ đánh dấu có đặc điểm chung: dùng thẻ (tags) chỉ loại nội dung khác nhau trên trang web. Các ký hiệu đánh dấu thường viết trong ngoặc góc (<>).
Ngôn ngữ đánh dấu cần cách phân biệt văn bản muốn biểu diễn từ hướng dẫn máy tính cần đọc. Bất kỳ văn bản xuất hiện trong thẻ đánh dấu được máy diễn giải là hướng dẫn.
Xem ví dụ:
<a href="https://careerkarma.com">Career Karma</a>
Đây là liên kết đến trang chủ Career Karma. Chúng ta dùng thẻ <a> định nghĩa liên kết, và khi liên kết kết thúc đóng bằng </a>.
Các thẻ này nói với máy tính chúng ta muốn hiển thị liên kết, hoặc neo (anchor - gốc của "a"). Các thẻ này không xuất hiện trên trang web. Chúng là hướng dẫn cho trình duyệt đọc, để biết cách hiển thị trang web cụ thể.
Tệp markup lưu dưới dạng tài liệu văn bản thuần túy (plain text). Nghĩa là bạn có thể mở bằng trình soạn thảo văn bản tiêu chuẩn.
Ngôn ngữ Đánh dấu vs. Ngôn ngữ Lập trình
Thật vậy: markup languages nghe như ngôn ngữ lập trình. Chúng ta nói về ngôn ngữ! Chỉ vì hai thuật ngữ nghe giống, không nghĩa chúng giống nhau.
Ngôn ngữ lập trình là tập hướng dẫn cho máy tính tạo ra nhiều loại đầu ra khác nhau. Ruby, Python và Perl là ngôn ngữ lập trình. Ngôn ngữ đánh dấu, mặt khác, dùng mô tả tài liệu.
Trong khi bạn có thể chạy chương trình Python hoặc Ruby, bạn không thể "chạy" tài liệu được đánh dấu. Tài liệu HTML, ví dụ, không được thực thi; chúng được hiển thị (rendered) bởi trình duyệt. Tài liệu XML không chạy; chúng được đọc bởi trình đọc dữ liệu đặc biệt.
Có những Ngôn ngữ Đánh dấu nào?
Bạn sẽ gặp nhiều ngôn ngữ đánh dấu nếu đào sâu. Có nhiều dữ liệu nên cần nhiều ngôn ngữ bao phủ trường hợp dùng. Với đó nói, phổ biến nhất là HTML, XML, và XHTML.
Ngôn ngữ Đánh dấu Siêu văn bản (HyperText Markup Language)
HTML là ngôn ngữ chính dùng trong phát triển web. Nếu không có, không có trang web. Nó định nghĩa cấu trúc trang, như tiêu đề, hình ảnh, văn bản nên xuất hiện. Nó cũng định nghĩa thứ tự các tính năng xuất hiện trong trình duyệt. Ngược lại, CSS (Cascading Style Sheets) dùng định nghĩa bố cục và giao diện trang trong trình duyệt.
HTML là một ngôn ngữ đánh dấu chuẩn. Trong HTML, thẻ dùng định nghĩa mọi phần tử trên trang, từ tiêu đề đến hình ảnh đến biểu mẫu.
Ngôn ngữ HTML được quản lý bởi tổ chức quốc tế World Wide Web Consortium (W3C). HTML thiết yếu đến cách web hoạt động nên tiêu chuẩn quốc tế cần thiết để viết và xử lý nhất quán.
Phiên bản mới nhất HTML là HTML5, bao gồm cải tiến từ phiên bản trước. Với đó nói, hầu hết thay đổi HTML là tăng dần vì ngôn ngữ quan trọng đến web.
Ngôn ngữ Đánh dấu Mở rộng (eXtensible Markup Language)
XML, hay eXtensible Markup Language, được thiết kế để truyền tải và lưu trữ dữ liệu. Ngôn ngữ tự mô tả (self-descriptive).
Điều này vì không giới hạn tên thẻ XML. Không có thẻ định nghĩa sẵn, nên bạn chọn tên mô tả chính xác mỗi điểm dữ liệu trong tài liệu XML.
Giả sử bạn tạo tài liệu đánh dấu theo dõi sách yêu thích. Trong XML, bạn có thể dùng cấu trúc:
<book> <title>How to Win Friends and Influence People</title> <author>Dale Carnegie</author> <rating>★★★★★</rating> </book>
Trong ví dụ, chúng ta tạo bốn thẻ: book, title, author, và rating. Thẻ title, author, rating xuất hiện trong thẻ book. Thẻ book đại diện một mục trong tệp XML.
Ngôn ngữ Đánh dấu Siêu văn bản Mở rộng (eXtensible HyperText Markup Language)
XHTML là phiên bản HTML4 đáp ứng tiêu chuẩn XML. Nó chủ yếu được thay thế bởi HTML5 nhờ yêu cầu bộ tính năng đa dạng hơn. Nhưng vẫn dùng ở một số góc internet. Hầu hết trang dùng XHTML là trang phát triển nhiều năm trước chưa cập nhật.
XHTML và HTML rất giống, nhưng có vài khác biệt. Ví dụ, thuộc tính HTML phải có cả tên và giá trị; không dùng thuộc tính độc lập. Thêm, tất cả thẻ XHTML viết thường. Trong HTML, bạn viết hoa hoặc thường, dù thực hành tốt khuyên dùng thường.
Kết luận
Ngôn ngữ đánh dấu dùng định nghĩa phần tử trong tài liệu. Các ngôn ngữ này, như HTML và XML, thiết kế đọc được bởi con người. Điều này giúp dễ hiểu dữ liệu ngôn ngữ đánh dấu biểu diễn.
Trong ngôn ngữ đánh dấu, hướng dẫn cho máy tính trình bày bằng thẻ. Các thẻ thường lưu giữa ngoặc góc (<>).
Bây giờ bạn sẵn sàng nói về ngôn ngữ đánh dấu như chuyên gia phát triển web!