Khanh Hoang - Kenn
Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.
Bài viết này sẽ lần lượt giới thiệu với bạn một số khái niệm cơ bản trong XML và những quy ước cơ bản cần biết khi xây dựng một tài liệu XML
Trước khi XML ra đời đã có nhiều kiểu định dạng văn bản điện tử như GML (Generalized Markup Language) của IBM, SGML (Standard Generalized Markup Language) của ANSI vào năm 1980 và HTML (Hyper Text Markup Language). Tuy nhiên các phương pháp này có nhiều nhược điểm như GML và SGML không thích hợp để truyền dữ liệu trên Web, HTML chủ yếu chú trọng vào việc làm cách nào hiển thị thông tin hơn là chú trọng đến nội dung truyền tải. Chính vì vậy XML (eXtensible Markup Language) được tạo ra để giải quyết các nhược điểm trên. So sánh giữa HTML và XML:
- XML là những chữ cái viết tắt của cụm từ eXtensible Markup Language
- XML dùng để phục vụ cho việc mô tả dữ liệu (thông tin lưu trữ bao gồm những gì, lưu trữ ra sao) để các hệ thống khác nhau có thể đọc và sử dụng những thông tin này một cách thuận tiện
- Các thẻ (tag) của XML thường không được định nghĩa trước mà chúng được tạo ra theo quy ước của người, (hoặc Chương trình) tạo ra XML theo những quy ước của chính họ
- XML sử dụng các khai báo kiểu dữ liệu DTD (Document Type Definition) hay lược đồ Schema để mô tả dữ liệu.
- Dữ liệu độc lập là ưu điểm chính của XML. Do XML chỉ dùng để mô tả dữ liệu bằng dạng text nên tất cả các chương trình đều có thể đọc được XML.
- Dễ dàng đọc và phân tích dữ liệu, nhờ ưu điểm này mà XML thường được dùng để trao đổi dữ liệu giữa các hệ thống khác nhau
- Dễ dàng để tạo 1 file XML
- Lưu trữ cấu hình cho web site
- Sử dụng cho phương thức Remote Procedure Calls (RPC) phục vụ web service
Một file XML thông thường bao gồm 2 phần:
Một file XML được xem là đúng cú pháp khi thỏa mãn tất cả các điều kiện sau:
Nnhư chúng ta đã biết, trong lập trình thì comment chính là dữ liệu do lập trình viên tự tạo ra trong chương trình của mình để lập nên những chú thích cần thiết để sau này khi đọc lại mã lệnh có thể hiểu mã lệnh một cách nhanh nhất. Trong XML cũng vậy, để tạo chú thích cho nội dung trong XML bạn cũng có thể tạo comment theo những quy ước sau
Là thông tin dành cho chương trình đang sử dụng file XML. Thành phần này không tuân theo các qui định của XML. Khi XML được đọc, các thông tin của đối tuợng này sẽ được đọc lên và truyền cho application
- Cú pháp: <?PITarget <instruction>?>
Trong đó:
- PITarget: tên của application nhận thông tin của processing instruction
- Instruction: nội dung sẽ truyền cho PITarget
Dữ liệu mô tả giá trị trong các tag thuộc tập tin XML được nhận dạng dưới dạng chuỗi ký tự, trong XML dữ liệu chuỗi được chia làm 2 dạng là CDATA và PCDATA
- PCDATA (Parsed character data): là dữ liệu sẽ được đọc và phân tích bởi chương trình phân tích XML, trong PCDATA chúng ta không được phép dùng các ký tự đặc biệt có liên quan đến việc xác định các thành tố của XML như <,>,&, …
- CDATA (Character data): dữ liệu dạng ký tự không được phân tích bởi một XML Parser vì thế có thể chứa bất kỳ các ký tự đặc biệt nào. CDATA luôn phải bắt đầu bằng “<![CDATA[” và kết thúc bằng “]]>”
Do chúng ta không thể sử dụng các ký tự đặc biệt đối với dữ liệu trong XML cho nên XML xây dựng các đối tuợng thay thế cho các ký tự đặc biệt; Các đối tượng này được gọi là các entities:
Khi các thẻ (tag) sử dụng để mô tả cho dữ liệu trong XML cần phải được biểu diễn thông tin nhiều hơn nữa, XML cho phép người tạo có thể sử dụng thuộc tính (attributes) để bổ xung cho việc mô tả dữ liệu chi tiết đối với các thẻ. Ngoài mục đích giúp cho việc mô tả thông tin đầy đủ hơn đối với dữ liệu của các thẻ (tag), thuộc tính còn có tác dụng hỗ trợ cho việc phân biệt giữa các thành tố cùng tên với nhau trong một tập tin XML. Về nguyên tắc, thuộc tính thường phải tồn tại từng cặp mô tả cho tên và giá trị của nó theo quy ước: <attName> = “attValue”. Cú pháp đầy đủ mô tả cho 1 tag với attributes đi kèm được mô tả như sau
<elementName attName1 = “attValue1” attName2=“attValue1” …>
…
</elementName>
Cũng giống như quy ước về đặt tên cho các thẻ (tag) trong XML, tên của thuộc tính (atributes name) cũng phân biệt chữa hoa, thường và luôn bắt đầu bởi ký tự hay dấu ghạch dưới đồng thời không cho phép sử dụng khoảng trắng (white space). Dưới đây là 1 mô tả cho việc sử dụng thuộc tính bên trong 1 tag.
<!-- Mô tả thông tin chi tiết của tag-->
<bandai= “2.8m” rong = “1.2m” cao= “0.8m” vatLieu = “gỗ xoan đào”>
Bàn ăn gia đình
</ban>
Trong ví dụ trên, bạn thấy ta có tag <ban> với các thuộc tính để mô tả chi tiết cho dữ liệu có tên “Bàn ăn gia đình” là dai, rong, cao, vatLieu cùng với các giá trị cần thiết. Đây là ví dụ về tag do chúng ta tự định nghĩa, tôi sử dụng 1 ví dụ khác ở dưới đây để minh họa việc sử dụng tag có dùng attributes mà có lẽ hầu như những ai biết về HTML đều đã từng sử dụng
<ahref="http://www.bodua.com"title="BODUA Group"target="_blank"> Liên kết đến WebSite BODUA Group
</a>
Như ý nghĩa chính của một tài liệu XML đã đề cập ở trên, trong thực tế XML thường được sử dụng cho các mục đính như sau:
- Mô tả cấu hình của 1 WebSite hay 1 ứng dụng (Điều này là dễ hiểu nếu bạn là 1 tập trình viên ASP.NET, chắc chắn bạn biết tập tin web.config; nếu bạn là người chuyên về xây dựng web application bằng JSP chắc hẳn bạn rất rành về faces-config.xml và web.xml và còn nhiều ứng dụng khác nữa)
- Cung cấp tin, dữ liệu cho các hệ thống khác nhau để có thể khai thác, sử dụng. Điều này có thể thấy dễ hiểu nhất khi bạn sử dụng tính năng cung cấp RSS của các web site có cung cấp tính năng dạng này như : www.vnExpress.net, www.tuoitre.vn, … để lấy tin tự động như giá vàng, tin thể thao, thời sự, tin thời tiết …
- Trong 1 tình huống khác, bạn xây dựng 1 ứng dụng cho việc điều khiển và giám sát sản xuất cho 1 công ty XYZ nào đó và công ty mẹ của công ty kia yêu cầu phần mềm giám sát và điều khiển sản xuất của bạn phải cung cấp dữ liệu dạng XML về cho hệ thống chính của họ vào cuối mỗi ngày, bao gồm những thông tin về sản lượng, lượng nguyên liệu đã sử dụng, … để họ thống kê dữ liệu trên toàn hệ thống. Thế là chương trình của bạn phải tạo XML để thông tin của các nhà máy con có thể cung cấp cho hệ thống chính quản lý