Because the DOM supports navigation in any direction (e.g., parent and previous sibling) and allows for arbitrary modifications, implementations typically buffer the document. However, a DOM need not originate in a serialized document at all, but can be created in place with the DOM API. And even before the idea of the DOM originated, there were implementations of equivalent structure with persistent disk representation and rapid access, for example
DynaText's model disclosed in and various database approaches.
Layout engines Web browsers rely on
layout engines to parse HTML into a DOM. Some layout engines, such as
Trident/MSHTML, are associated primarily or exclusively with a particular browser, such as Internet Explorer. Others, including
Blink,
WebKit, and
Gecko, are shared by a number of browsers, such as
Google Chrome,
Opera,
Safari, and
Firefox. The different layout engines implement the DOM standards to varying degrees of compliance.
Libraries DOM implementations: •
libxml2 •
MSXML •
Xerces is a collection of DOM implementations written in C++, Java and Perl • xml.dom for
Python • XML for <SCRIPT> is a JavaScript-based DOM implementation • PHP.Gt DOM is a server-side DOM implementation based on
libxml2 and brings DOM level 4 compatibility to the
PHP programming language • Domino is a Server-side (Node.js) DOM implementation based on Mozilla's dom.js. Domino is used in the
MediaWiki stack with Visual Editor. • SimpleHtmlDom is a simple HTML document object model in C#, which can generate HTML string programmatically. APIs that expose DOM implementations: •
JAXP (Java API for XML Processing, ) is an API for accessing DOM providers •
Lazarus (
Free Pascal IDE) contains two variants of the DOM - with UTF-8 and ANSI format Inspection tools: •
DOM Inspector is a web developer tool == See also ==