Content deleted Content added
→DOM tree structure: MOS:HEADCAPS |
m →Libraries: HTTP to HTTPS for SourceForge |
||
(46 intermediate revisions by 32 users not shown) | |||
Line 1:
{{short description|Convention for representing and interacting with objects in HTML, XHTML, and XML documents}}
{{Infobox technology standard
| title = Document Object Model (DOM)
| image = DOM-model.svg
| caption = Example of DOM hierarchy in an HTML document
| status t_published wisdom tree= {{Start date and age|1998|10|1}}
| version = DOM4<ref>All versioning refers to W3C DOM only.</ref>
| version_date = {{Start date and age|2015|11|19}}
Line 23 ⟶ 20:
}}
{{HTML}}
The '''Document Object Model''' ('''DOM''') is a [[cross-platform]]<ref name=":0" /> and [[Language-independent specification|language-independent]]
| access-date = 2012-01-12
| publisher = W3C
Line 32 ⟶ 29:
The principal standardization of the DOM was handled by the [[World Wide Web Consortium]] (W3C), which last developed a recommendation in 2004. [[WHATWG]] took over the development of the standard, publishing it as a [[living document]]. The W3C now publishes stable snapshots of the WHATWG standard.
In HTML DOM (Document Object Model), every element is a node{{Clarification needed|reason=Clarify what this means, or, if it's simply a statement of nomenclature, then rewrite to make that explicit (e.g. is "called" a node)|date=August 2025}}:<ref>{{cite web | url=https://www.w3schools.com/js/js_htmldom.asp | title=JavaScript HTML DOM }}</ref>
* A document is a document node.
Line 61 ⟶ 58:
* DOM Level 3, published in April 2004, added support for [[XPath]] and keyboard [[event handling]], as well as an interface for [[serialization|serializing]] documents as XML.
* HTML5 was published in October 2014. Part of HTML5 had replaced DOM Level 2 HTML module.
* DOM Level 4 was published in 2015
* [https://dom.spec.whatwg.org/review-drafts/2020-06/ DOM 2020-06] was published in September 2021 as a W3C Recommendation.<ref>{{cite web|url=https://www.w3.org/standards/history/dom/|title=DOM publication history|date=28 September 2021 |access-date=10 August 2024}}</ref> It is a snapshot of the WHATWG living standard.
==Applications==
Line 79 ⟶ 77:
=== Elements as nodes ===
Elements in an HTML or XML document are represented as nodes in the DOM tree. Each element node has a tag name
<html>
<head>
Line 85 ⟶ 83:
</head>
<body>
<h1>Welcome to DOM</h1>
<p>This is my website.</p>
</body>
Line 97 ⟶ 95:
- body
- h1
- "Welcome to DOM"
- p
- "This is my website."
Line 129 ⟶ 127:
</syntaxhighlight>Another way to create a DOM structure is using the innerHTML property to insert HTML code as a string, creating the elements and children in the process. For example:<syntaxhighlight lang="javascript">
document.getElementById("root").innerHTML = "<child></child>";
</syntaxhighlight>Another method is to use a JavaScript library or framework such as [[jQuery]], [[AngularJS]], [[React (JavaScript library)|React]], [[Vue.js]], etc. These libraries provide a more convenient, eloquent and efficient way to create, manipulate and interact with the DOM.
It is also possible to create a DOM structure from an XML or JSON data, using JavaScript methods to parse the data and create the nodes accordingly.
Line 138 ⟶ 136:
==Implementations==
Because the DOM supports navigation in any direction (e.g., parent and previous sibling) and allows for arbitrary modifications,
===Layout engines===
Line 151 ⟶ 149:
* [[Apache Xerces|Xerces]] is a collection of DOM implementations written in C++, Java and Perl
* [https://docs.python.org/3/library/xml.dom.html xml.dom] for [[Python (programming language)|Python]]
* XML for <SCRIPT> is a JavaScript-based DOM implementation<ref>{{cite web|url=
* [https://github.com/PhpGt/Dom PHP.Gt DOM] is a server-side DOM implementation based on [[libxml2]] and brings DOM level 4 compatibility<ref>{{cite web|url=https://php.gt/dom#features-at-a-glance|title=The modern DOM API for PHP 7 projects|date=5 December 2021}}</ref> to the [[PHP]] programming language
* [https://github.com/fgnass/domino/ 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.
|