Phân tích sơ đồ:
2.3 Giới thiệu về PHP-DOM
Hình 2.8. Mô hình lớp DOM trong PHP
DOM là chữ viết tắt từ tiếng Anh Document Object Model ("Mô hình Đối tượng Tài liệu"), là một giao diện lập trình ứng dụng (API). Thường thường DOM, có dạng một cây cấu trúc dữ liệu, được dùng để truy xuất các tài liệu dạng HTML và XML. Mô hình DOM độc lập với hệ điều hành và dựa theo kỹ thuật lập trình hướng đối tượng để mô tả tài liệu.
Ban đầu, chưa có chuẩn thống nhất nên các thành phần trong một tài liệu HTML mô tả bằng các phiên bản khác nhau của DOM được hiển thị bởi các chương trình duyệt web thông qua JavaScript. Điều này buộc World Wide Web Consortium (W3C) phải đưa ra một loạt các mô tả kĩ thuật về tiêu chuẩn cho DOM để thống nhất mô hình này.
Mặc dù một tài liệu hay văn bản có cấu trúc chặt chẽ (well-structured document) luôn luôn có thể được mô hình hóa bằng một cấu trúc dạng cây, DOM không có giới hạn về cấu trúc dữ liệu của một tài liệu.
Hầu hết các bộ phân tích XML (XML parsers) (ví dụ: Xerces) và bộ xử lí XSL (ví dụ: Xalan) đã được phát triển để sử dụng cấu trúc cây này. Những hiện thực như
vậy đòi hỏi toàn bộ nội dụng của một văn bản phải được phân tích và lưu trong bộ nhớ. Vì thế, DOM được sử dụng tốt nhất trong các ứng dụng mà trong đó các thành phần của tài liệu có thể được truy xuất và thao tác một cách ngẫu nhiên. Với các ứng dụng dựa trên XML, bao gồm yêu cầu đọc/ghi có chọn lọc cho mỗi lần phân tích (one-time selective read/write per parse), DOM cho thấy được sự tối ưu về mặt bộ nhớ. Trong các trường hợp đó thì giao diện lập trình ứng dụng SAX trở nên rất tiện lợi về cả mặt tốc độ và bộ nhớ.
Cấp độ
Các phiên bản mô hình DOM được xếp theo cấp độ hay bậc (level). Hiện tại thì, bản chi tiết kĩ thuật hiện hành của DOM đang ở cấp độ 2. Tuy vậy một số ở bản mô tả chi tiết kĩ thuật cấp độ 3 đang là khuyến khích sử dụng của W3C.
Cấp độ 0
Bao gồm mọi chi tiết DOM theo qui định của từng nhà phát triển riêng biệt tồn tại trước khi DOM cấp độ 1 ra đời. Ví dụ: document.images, document.forms, document.layers, và document.all. Chú ý: đây là mô tả chi tiết kĩ thuật chính thức bởi W3C hơn là một tham khảo đến những thứ tồn tại trước khi xảy ra quá trình chuẩn hóa.
Cấp độ 1
Cách duyệt qua tài liệu (cấu trúc cây) của DOM (HTML và XML) và thao tác nội dung (bao gồm việc thêm thành phần). Các thành phần riêng cho HTML cũng được đưa vào.
Cấp độ 2
Hỗ trợ không gian tên XML, khung nhìn có lọc (filtered views) và các sự kiện DOM.
Cấp độ 3
Nhằm nâng cao các khả năng của DOM, cấp độ 3 chứa 6 bản mô tả chi tiết kĩ thuật khác nhau:
1) DOM lõi cấp độ 3;
2) DOM cấp độ 3 Lưu và Tải; 3) DOM cấp độ 3 XPath;
viện DOM đọc toàn bộ tài liệu XML sang bộ nhớ và trình bày nó như một cây các nút, như minh hoạ trong Hình 1.
Hình 2.9. Cây XML DOM dùng cho XML các sách
Nút books tại đỉnh của cây có hai thẻ book con. Trong mỗi cuốn sách (book), có các nút author, publisher, và title. Các nút author, publisher, và title mỗi thứ có các nút văn bản con chứa văn bản.
Bộ mã để đọc tệp XML các sách và hiển thị nội dung sử dụng DOM hiển thị:
Đọc XML các sách (books) với DOM
<?php
$doc = new DOMDocument(); $doc->load( 'books.xml' );
$books = $doc->getElementsByTagName( "book" ); foreach( $books as $book )
{
$authors = $book->getElementsByTagName( "author" ); $author = $authors->item(0)->nodeValue;
$publishers = $book->getElementsByTagName( "publisher" );
$publisher = $publishers->item(0)->nodeValue;
$titles = $book->getElementsByTagName( "title" ); $title = $titles->item(0)->nodeValue;
echo "$title - $author - $publisher\n"; }