The DocumentObjectModel (DOM) is the standard means to access an XML document. It comes in three levels, each building upon each other. At the current time, only levels 1 and 2 are Recommendations. Level 3 is still a working draft. See the [index] of all the specification parts.
DOM level 1 provides simple tree access to the XML document. It isn't much more complex than a first year computer science interface to a tree, except the names are all really bad to avoid namespace collisions with legacy APIs.
DOM level 2 adds XML Events and XML Views. This is the scriptable DOM for DynamicHTML?.
DOM level 3 seeks to provide a standard interface to all the new XML specifications, like XPath. These specifications look at XML as a universal data representation, so things get complicated at this point.
The DocumentObjectModel was first introduced by NetScape when they unleased JavaScript on the world in Navigator 4.0. However, they never finished it (along with CascadingStyleSheets and JavaScript) as they terminated development of Navigator midway through. MicroSoft picked it up in InternetExplorer 4.0 and the W3C standardized it.
I really, really hate the names. -- SunirShah
I hate it when there are attributes and methods instead of just accessor methods, I hate it even more when some attributes cause extensive changes in the tree when set, and I don't like the many redundant attributes. But then again, at least it's a standard, so we know what we're talking about when moving from one DOM implementation to another. -- AlexSchroeder