06/04/2021, 14:50

Bài 02: Cấu trúc cây trong XML - Học 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 ...

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

xml dom model jpg

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, lastnamecontactno tương đương với ba giá trị như sau:

  • firstname => Tanmay
  • lastname => Patil
  • contactno => 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.

0