Khác biệt giữa bản sửa đổi của “Document Object Model”

Bách khoa toàn thư mở Wikipedia
Nội dung được xóa Nội dung được thêm vào
Mjbmrbot (thảo luận | đóng góp)
Xqbot (thảo luận | đóng góp)
n r2.5.2) (robot Thay: fa:مدل شی‌گرای سند; sửa cách trình bày
Dòng 1: Dòng 1:
'''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â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.
'''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â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.
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.
Dòng 7: Dòng 7:
Hầu hết các bộ phân tích XML (''XML parsers'') (ví dụ: [[Xerces]]) và bộ xử lí [[Extensible Stylesheet Language|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 [[Simple API for XML|SAX]] trở nên rất tiện lợi về cả mặt tốc độ và bộ nhớ.
Hầu hết các bộ phân tích XML (''XML parsers'') (ví dụ: [[Xerces]]) và bộ xử lí [[Extensible Stylesheet Language|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 [[Simple API for XML|SAX]] trở nên rất tiện lợi về cả mặt tốc độ và bộ nhớ.


==Cấp độ==
== 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á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.


Dòng 19: Dòng 19:
: 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) the DOM Level 3 Core; 2) the DOM Level 3 Load and Save; 3) the DOM Level 3 XPath; 4) the DOM Level 3 Views and Formatting; 5) DOM Level 3 Requirements; and 6) the DOM Level 3 Validation.
: 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) the DOM Level 3 Core; 2) the DOM Level 3 Load and Save; 3) the DOM Level 3 XPath; 4) the DOM Level 3 Views and Formatting; 5) DOM Level 3 Requirements; and 6) the DOM Level 3 Validation.


==Sử dụng trong trình duyệt web==
== Sử dụng trong trình duyệt web ==


Các hiện thực khác nhau của DOM trong các trình duyệt web khác nhau đã dẫn đến các vấn đề không tương hợp trong quá khứ. Vì thế, các lập trình viên web tốt hơn hết là nên kiểm tra xem một thuộc tính có tồn tại hay không trước khi sử dụng nó. Đoạn mã sau cho thấy cách kiểm tra phương thức quan trọng của W3CDOM có tồn tại hay không trước khi muốn thực thi đoạn mã phụ thuộc vào sự hỗ trợ của W3CDOM.
Các hiện thực khác nhau của DOM trong các trình duyệt web khác nhau đã dẫn đến các vấn đề không tương hợp trong quá khứ. Vì thế, các lập trình viên web tốt hơn hết là nên kiểm tra xem một thuộc tính có tồn tại hay không trước khi sử dụng nó. Đoạn mã sau cho thấy cách kiểm tra phương thức quan trọng của W3CDOM có tồn tại hay không trước khi muốn thực thi đoạn mã phụ thuộc vào sự hỗ trợ của W3CDOM.
Dòng 38: Dòng 38:
Chương trình duyệt [[Internet Explorer]] của Microsoft – phiên bản 5 (1999), ... phiên bản 6 (2001) – là một trong các trình duyệt phổ biến nhất trong năm 2005. Internet Explorer và các trình duyệt khác dựa trên động cơ hiển thị [[Gecko (động cơ hiển thị)|Gecko]] như là [[Mozilla Application Suite|Mozilla]] và [[Mozilla Firefox|Firefox]] hỗ trợ nhiều thuộc tính của W3C DOM. Vì thế các vấn đề trong việc sử dụng W3CDOM không còn tồn tại nhiều nữa như từng có trước đây với Internet Explorer 4.x và Netscape 4.x vào năm 2000. Bảng trong bài [[so sánh các động cơ hiển thị]] (DOM) cho thấy các phương thức và thuộc tính nào có thể được sử dụng một cách an toàn cho mỗi chương trình duyệt.
Chương trình duyệt [[Internet Explorer]] của Microsoft – phiên bản 5 (1999), ... phiên bản 6 (2001) – là một trong các trình duyệt phổ biến nhất trong năm 2005. Internet Explorer và các trình duyệt khác dựa trên động cơ hiển thị [[Gecko (động cơ hiển thị)|Gecko]] như là [[Mozilla Application Suite|Mozilla]] và [[Mozilla Firefox|Firefox]] hỗ trợ nhiều thuộc tính của W3C DOM. Vì thế các vấn đề trong việc sử dụng W3CDOM không còn tồn tại nhiều nữa như từng có trước đây với Internet Explorer 4.x và Netscape 4.x vào năm 2000. Bảng trong bài [[so sánh các động cơ hiển thị]] (DOM) cho thấy các phương thức và thuộc tính nào có thể được sử dụng một cách an toàn cho mỗi chương trình duyệt.


==Bản mô tả chi tiết kĩ thuật==
== Bản mô tả chi tiết kĩ thuật ==
*[http://www.w3.org/TR/REC-DOM-Level-1/ Document Object Model (DOM) Level 1 Specification]
* [http://www.w3.org/TR/REC-DOM-Level-1/ Document Object Model (DOM) Level 1 Specification]
*Level 2 Recommendations:
* Level 2 Recommendations:
**[http://www.w3.org/TR/DOM-Level-2-Core/ Document Object Model (DOM) Level 2 Core Specification]
** [http://www.w3.org/TR/DOM-Level-2-Core/ Document Object Model (DOM) Level 2 Core Specification]
**[http://www.w3.org/TR/DOM-Level-2-Views/ Document Object Model (DOM) Level 2 Views Specification]
** [http://www.w3.org/TR/DOM-Level-2-Views/ Document Object Model (DOM) Level 2 Views Specification]
**[http://www.w3.org/TR/DOM-Level-2-Events/ Document Object Model (DOM) Level 2 Events Specification]
** [http://www.w3.org/TR/DOM-Level-2-Events/ Document Object Model (DOM) Level 2 Events Specification]
**[http://www.w3.org/TR/DOM-Level-2-Style/ Document Object Model (DOM) Level 2 Style Specification]
** [http://www.w3.org/TR/DOM-Level-2-Style/ Document Object Model (DOM) Level 2 Style Specification]
**[http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ Document Object Model (DOM) Level 2 Traversal and Range Specification]
** [http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ Document Object Model (DOM) Level 2 Traversal and Range Specification]
**[http://www.w3.org/TR/DOM-Level-2-HTML/ Document Object Model (DOM) Level 2 HTML Specification]
** [http://www.w3.org/TR/DOM-Level-2-HTML/ Document Object Model (DOM) Level 2 HTML Specification]
*Level 3 Recommendations:
* Level 3 Recommendations:
**[http://www.w3.org/TR/DOM-Level-3-Core/ Document Object Model (DOM) Level 3 Core Specification]
** [http://www.w3.org/TR/DOM-Level-3-Core/ Document Object Model (DOM) Level 3 Core Specification]
**[http://www.w3.org/TR/DOM-Level-3-LS/ Document Object Model (DOM) Level 3 Load and Save Specification]
** [http://www.w3.org/TR/DOM-Level-3-LS/ Document Object Model (DOM) Level 3 Load and Save Specification]
**[http://www.w3.org/TR/DOM-Level-3-Val/ Document Object Model (DOM) Level 3 Validation Specification]
** [http://www.w3.org/TR/DOM-Level-3-Val/ Document Object Model (DOM) Level 3 Validation Specification]
*Level 3 Working Group Notes:
* Level 3 Working Group Notes:
**[http://www.w3.org/TR/DOM-Level-3-XPath/ Document Object Model (DOM) Level 3 XPath Specification]
** [http://www.w3.org/TR/DOM-Level-3-XPath/ Document Object Model (DOM) Level 3 XPath Specification]
**[http://www.w3.org/TR/DOM-Level-3-Views/ Document Object Model (DOM) Level 3 Views and Formatting Specification]
** [http://www.w3.org/TR/DOM-Level-3-Views/ Document Object Model (DOM) Level 3 Views and Formatting Specification]
**[http://www.w3.org/TR/DOM-Requirements/ Document Object Model (DOM) Requirements]
** [http://www.w3.org/TR/DOM-Requirements/ Document Object Model (DOM) Requirements]


==Xem thêm==
== Xem thêm ==
*[[Sự kiện DOM]]
* [[Sự kiện DOM]]
*[[Simple API for XML|SAX]] – A set of APIs for accessing and manipulating XML documents in a sequential manner.
* [[Simple API for XML|SAX]] – A set of APIs for accessing and manipulating XML documents in a sequential manner.
*[[JDOM]] – A Java-based document object model for XML that integrates with DOM and SAX and uses parsers to build the document.
* [[JDOM]] – A Java-based document object model for XML that integrates with DOM and SAX and uses parsers to build the document.
*[[Comparison of layout engines (DOM)]]
* [[Comparison of layout engines (DOM)]]
*[[Dynamic HTML]]
* [[Dynamic HTML]]


==Liên kết ngoài==
== Liên kết ngoài ==
*[http://www.w3.org/DOM/ Trang chủ DOM của W3C]
* [http://www.w3.org/DOM/ Trang chủ DOM của W3C]
*[http://xml.coverpages.org/dom.html Technology Reports]
* [http://xml.coverpages.org/dom.html Technology Reports]
*[http://xml.com/pub/rg/DOM_Tutorials Tutorials]
* [http://xml.com/pub/rg/DOM_Tutorials Tutorials]
*[http://www.w3.org/2003/02/06-dom-support.html What does your user agent claim to support?]
* [http://www.w3.org/2003/02/06-dom-support.html What does your user agent claim to support?]
*[http://www.mozilla.org/docs/dom/reference/levels.html What does each DOM Level bring?]
* [http://www.mozilla.org/docs/dom/reference/levels.html What does each DOM Level bring?]
*[http://msdn.microsoft.com/workshop/author/dom/domoverview.asp About the W3C Document Object Model] (MSDN)
* [http://msdn.microsoft.com/workshop/author/dom/domoverview.asp About the W3C Document Object Model] (MSDN)
*[http://www.quirksmode.org/dom/contents.html W3C DOM scripts and compatibility tables] (Quirksmode)
* [http://www.quirksmode.org/dom/contents.html W3C DOM scripts and compatibility tables] (Quirksmode)
*[http://mozilla.org/docs/dom/domref/ Gecko DOM Reference]
* [http://mozilla.org/docs/dom/domref/ Gecko DOM Reference]
*[http://developer.kde.org/documentation/library/cvs-api/khtml/html/namespaceDOM.html khtml Library API Documentation]
* [http://developer.kde.org/documentation/library/cvs-api/khtml/html/namespaceDOM.html khtml Library API Documentation]


*Giao diện cho...
* Giao diện cho...
**[http://xml.apache.org/xerces-c/program-dom.html C++]
** [http://xml.apache.org/xerces-c/program-dom.html C++]
**[http://www.w3.org/2003/01/dom2-javadoc/index.html Java] – W3C DOM Cấp độ 2
** [http://www.w3.org/2003/01/dom2-javadoc/index.html Java] – W3C DOM Cấp độ 2
**[http://interaction.in-progress.com/developer/dom/ Lisp]
** [http://interaction.in-progress.com/developer/dom/ Lisp]
**[http://www.philo.de/xml/downloads.shtml Pascal] ([[Kylix]])
** [http://www.philo.de/xml/downloads.shtml Pascal] ([[Kylix]])
**[http://search.cpan.org/~tjmather/XML-DOM-1.43/ Perl]
** [http://search.cpan.org/~tjmather/XML-DOM-1.43/ Perl]
**[http://www.php.net/manual/en/ref.domxml.php PHP]
** [http://www.php.net/manual/en/ref.domxml.php PHP]
**[http://www.python.org/doc/current/lib/module-xml.dom.html Python]
** [http://www.python.org/doc/current/lib/module-xml.dom.html Python]
**[http://libgdome-ruby.berlios.de/ Ruby]
** [http://libgdome-ruby.berlios.de/ Ruby]
**[http://tclxml.sourceforge.net/tcldom.html TCL]
** [http://tclxml.sourceforge.net/tcldom.html TCL]
{{Commonscat|Document object models}}
{{Commonscat|Document object models}}


Dòng 100: Dòng 100:
[[es:Document Object Model]]
[[es:Document Object Model]]
[[eu:Document Object Model]]
[[eu:Document Object Model]]
[[fa:مدل شئ‌گرای سند]]
[[fa:مدل شی‌گرای سند]]
[[fr:Document Object Model]]
[[fr:Document Object Model]]
[[ko:문서 객체 모델]]
[[ko:문서 객체 모델]]

Phiên bản lúc 06:54, ngày 20 tháng 12 năm 2010

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 HTMLXML. 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) the DOM Level 3 Core; 2) the DOM Level 3 Load and Save; 3) the DOM Level 3 XPath; 4) the DOM Level 3 Views and Formatting; 5) DOM Level 3 Requirements; and 6) the DOM Level 3 Validation.

Sử dụng trong trình duyệt web

Các hiện thực khác nhau của DOM trong các trình duyệt web khác nhau đã dẫn đến các vấn đề không tương hợp trong quá khứ. Vì thế, các lập trình viên web tốt hơn hết là nên kiểm tra xem một thuộc tính có tồn tại hay không trước khi sử dụng nó. Đoạn mã sau cho thấy cách kiểm tra phương thức quan trọng của W3CDOM có tồn tại hay không trước khi muốn thực thi đoạn mã phụ thuộc vào sự hỗ trợ của W3CDOM.

  if (document.getElementById && document.getElementsByTagName) {
     // vì các phương thức quan trọng getElementById và getElementsByTagName
     // có mặt nên đoạn mã sau có thể an toàn mà sử dụng chúng.
 
     obj = document.getElementById("navigation")
     // đoạn mã khác có sử dụng W3CDOM.
     // .....
  }


Chương trình duyệt Internet Explorer của Microsoft – phiên bản 5 (1999), ... phiên bản 6 (2001) – là một trong các trình duyệt phổ biến nhất trong năm 2005. Internet Explorer và các trình duyệt khác dựa trên động cơ hiển thị Gecko như là MozillaFirefox hỗ trợ nhiều thuộc tính của W3C DOM. Vì thế các vấn đề trong việc sử dụng W3CDOM không còn tồn tại nhiều nữa như từng có trước đây với Internet Explorer 4.x và Netscape 4.x vào năm 2000. Bảng trong bài so sánh các động cơ hiển thị (DOM) cho thấy các phương thức và thuộc tính nào có thể được sử dụng một cách an toàn cho mỗi chương trình duyệt.

Bản mô tả chi tiết kĩ thuật

Xem thêm

Liên kết ngoài