Giới thiệu về XML
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, cách tạo 1 XML trong Netbean và những quy ước cơ bản cần biết khi xây dựng một tài liệu XML
I. Lịch sử hình thành 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ủaANSI 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:
HTML
|
XML
|
HTML được thiết kế cho mục đích trình bày dữ liệu
|
XML được thiết kế cho mục đíc lưu trữ và truyền tải dữ liệu giữa các hệ thống khác nhau
|
HTML dùng để hiển thị dữ liệu và chú trọng vào việc dữ liệu được hiển thị như thế nào
|
XML dùng để mô ta dữ liệu và chú trọng vào nội dung của dữ liệu
|
HTML hiển thị thông tin
|
XML mô tả thông tin
|
II. Đặc trưng của 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 ratheo 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.
III. Ưu điểm của XML:
- 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
IV. Cấu trúc của 1 file XML:
Một file XML thông thường bao gồm 2 phần:
- Document Prolog: lưu trữ metadata của XML gồm 2 phần: khai báo XML và khai báo kiểu dữ liệu trong XML. Phần khai báo XML (XML declararion) bao gồm các thông tin về version của XML, charset, encoding…. Phần khai báo kiểu dữ liệu trong XML (DTD) dùng để khai báo cấu trúc của các thẻ dùng trong XML
- Root element hay còn gọi là Document Element: chứa tất cả các phần tử và nội dung của nó. 1 phần tử của XML phải có thẻ mở và thẻ đóng
V. Tạo XML trong Netbean:
- Right Click vào tên project chọn New/Other… trong khung Categories ta chọnXML và trong danh sách của Files types, bạn hãy chọn XML Document rồi nhấn vào nút Next:
- Ở bước thứ 2 chúng ta đặt tên XML và folder lưu trữ XML, nếu Folder để trống thì mặc định sẽ lưu tại Folder của project
- Ở bước thứ 3 chúng ta sẽ xác định dạng XML cần tạo thông qua 1 trong 3 lựa chọn như hình:
- Well-formed Document: tạo XML đúng cú pháp
- DTD-Constrained Document: Tạo XML có khai báo DTD (Document type definition) để mô tả cấu trúc dữ liệu trong XML
- XML-Schema-Constrained Document: Tạo XML có sử dụng “lược đồ” Schema để kiểm tra tính hợp lệ của XML
- Ở bài viết này, chúng ta sẽ chọn Well-formed Document và Finish
- Sau khi Finish, bạn hãy nhập dữ liệu như hình sau:
- Như quan sát hình trên chúng ta thấy 1 file XML được bắt đầu bằng khai báo:
<?xml version="1.0" encoding="UTF-8"?>
- <?xml: khai báo để chương trình phân tích XML biết được đây là 1 file xml (Chương trình phân tích XML có thể là trình duyệt, chương trình của bạn hay một ứng dụng có khả năng đọc và phân tích định dạng XML để lấy dữ liệu từ nó)
- version = “1.0” khai báo version của XML
- encoding = “UTF-8”: bảng mã dùng trong file XML
VI. Well-formed XML Document
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:
- Chỉ có duy nhất có một phần tử thuộc cấp cao nhất trong tài liệu, còn gọi là nút gốc (root element)
- Mỗi một thẻ mở đều phải có thẻ đóng và tên thẻ là phân biệt hoa thường
- Các thẻ khi đóng phải theo đúng trình tự (mở sau đóng trước)
- Tên thẻ không nên có khoảng trắng, không nên bắt đầu bằng “xml”
- Các thuộc tính (atributes) của một thẻ luôn luôn tồn tại theo cặp theo quy ước:<tên> = “<giá_trị>”; không nên đặt tên thuộc tính trùng nhau, và giá trị của thuộc tính phải đặt trong cặp dấu nháy kép hay nháy đơn. Tên của thuộc tính (atribute) sẽ theo qui luật đặt tên giống như đối với tên thẻ
- Các thẻ (tag) trong XML có thể lồng nhau (Thẻ này có thể chứa nhiều thẻ khác ở bên trong)
VII. Một số thành phần khác trong XML:
1. Comment: như 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
- Comment trong XML bắt đầu bằng <!-- và kết thúc bằng -->. Một số lưu ý trong Comment:
- Trong nội dung của comment không nên có ký tự “-“
- Không nên đặt comment trong 1 thẻ (Thuộc giới hạn mở thẻ … đóng thẻ – quy ước này ám chỉ những “thẻ con” những thẻ chỉ có nội dung mà không chứa các thẻ khác lồng bên trong nó)
- Không nên đặt comment trước dòng khai báo <?xml….?>
2. Processing Instructions: 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
3. Kiểu dữ liệu: 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 “]]>”
4. Entity: 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:
Entity
|
Output
|
<
|
<
|
>
|
>
|
&
|
&
|
'
|
‘
|
"
|
“
|
Bạn có thể tham khảo thêm các entities được phép sử dụng trong XML và HTML tại Wikipedia
5. Attributes: 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 -->
<ban dai= “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
<a href="http://www.bodua.com" title="BODUA Group" target="_blank">
Liên kết đến WebSite BODUA Group
</a>
VIII. Ứng dụng của XML
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ý
Đũa cả – Đũa cùi
www.bodua.com
Tài liệu tham khảo : Giáo trình Aptech
Tài liệu tham khảo thêm về XML tại W3school