Bài 02: Cấu trúc cây trong XML
Một tài liệu XML được tạo bởi các thẻ (XML element) và chúng có thể được tổ chức theo một cấu trúc cây thư mục, điều này còn có thể gọi là Nested Elements trong XML. Vậy cách tổ chức như thế nào để có thể lưu trữ được dữ liệu trong thế giới thực? Chúng ta cùng tìm hiểu vấn đề này nhé.
1. Cấu trúc cây trong XML
Như ở bài tìm hiểu XML là gì mình có giới thiệu sơ lược về cách tạo thẻ Root Node (phần 2). Từ ví dụ đó ta có thể rút ra kết luận rằng các thẻ XML có thể lồng lên nhau, thẻ ngoài ta gọi là thẻ cha và các thể bên trong ta gọi là thẻ con.
Ví dụ: Sơ đồ cấu trúc cây tổ chức lưu trữ thông tin nhân viên trong một công ty
Bài viết này được đăng tại [free tuts .net]
Với sơ đồ này ta sẽ thực hiện từng bước tạo tài liệu XML như sau:
Bước 1: Thẻ ngoài cùng root là company
<?xml version="1.0" encoding="UTF-8"?> <company> </company>
Bước 2: Bên trong thẻ company
có hai thẻ employee
.
<?xml version="1.0" encoding="UTF-8"?>
<company>
<employee>
</employee>
<employee>
</employee>
</company>
Bước 3: Bên trong thẻ employee
đầu tên gồm ba thẻ firstname
, lastname
và contactno
tương đương với ba giá trị như sau:
firstname
=> Tanmaylastname
=> Patilcontactno
=> 123456789
<?xml version="1.0" encoding="UTF-8"?> <company> <employee> <firstname> Tanmay </firstname> <lastname> Patil </lastname> <contactno> 123456789 </contactno> </employee> <employee> </employee> </company>
Bước 4: Tương tự cho nội dung bên trong thẻ employee
thứ hai.
<?xml version="1.0" encoding="UTF-8"?> <company> <employee> <firstname> Tanmay </firstname> <lastname> Patil </lastname> <contactno> 123456789 </contactno> </employee> <employee> <firstname> Taniya </firstname> <lastname> Mishra </lastname> <contactno> 123456789 </contactno> </employee> </company>
Như vậy là ta đã đặc tả xong cấu trúc XML lưu trữ dữ liệu ứng dụng quản lý nhân viên trong công ty.
Câu hỏi đặt ra là nếu ta lưu trữ thêm một nhân viên nữa thì phải làm thế nào? Rất đơn giản ta chỉ việc tạo thêm một thẻ employee
và thêm thông tin là được.
<?xml version="1.0" encoding="UTF-8"?> <company> <employee> <firstname> Tanmay </firstname> <lastname> Patil </lastname> <contactno> 123456789 </contactno> </employee> <employee> <firstname> Taniya </firstname> <lastname> Mishra </lastname> <contactno> 123456789 </contactno> </employee> <employee> <firstname> Cuong </firstname> <lastname> Nguyen </lastname> <contactno> 0979306603 </contactno> </employee> </company>
Quá đơn giản và dễ hiểu phải không các bạn.
2 Cấu trúc cây nhiều cấp trong XML
Lấy ví dụ ở phần thứ nhất và bổ sung thêm yêu cầu sau: Môi nhân viên lưu trữ thêm danh sách người thân của nhân viên đó (chỉ cần lưu trữ tên, mối quan hệ).
Trước tiên ta cần tổ chức XML lưu trữ người thân đã. Giả sử mình sẽ lưu trữ dạng sau:
<family> <person> <name>Nguyễn Sơn</name> <relationship>Cha</relationship> </person> <person> <name>Lê Thị Sửu</name> <relationship>Mẹ</relationship> </person> <person> <name>Nguyễn Văn Trường</name> <relationship>Anh trai</relationship> </person> </family>
Ráp vào bài toán thứ nhất ta sẽ có cấu trúc XML sau:
<?xml version="1.0" encoding="UTF-8"?> <company> <employee> <firstname> Tanmay </firstname> <lastname> Patil </lastname> <contactno> 123456789 </contactno> <family> <person> <name>Nguyễn Sơn</name> <relationship>Cha</relationship> </person> <person> <name>Lê Thị Sửu</name> <relationship>Mẹ</relationship> </person> <person> <name>Nguyễn Văn Trường</name> <relationship>Anh trai</relationship> </person> </family> </employee> </company>
Như vậy mỗi lần thêm nhân viên thì chỉ việc bổ sung thẻ employee
và muốn thêm người thân thì chỉ việc bổ sung thẻ person
.
3. Lời kết
Nếu bạn đã biết về HTML thì rất dễ hiểu bởi vì HTML được xây dựng dựa vào đặc tả của XML.
Bài này chúng ta đã học cách tạo một cấu trúc cây trong XML và thao tác với element khá nhiều. Tuy nhiên chúng ta chưa học nguyên tắc tạo ra element đó nên trong bài tiếp theo chúng ta sẽ tìm hiểu nguyên tắc tạo elements trong XML, ví dụ cách đặt tên và cách tạo thẻ không có thẻ đóng.
Cùng chuyên mục:
Phiên làm việc là gì trong SQL
Trong bài viết này mình sẽ giải thích phiên làm việc là gì trong SQL…