For a long time now an update to DOM Core was desired as DOM Level 3 Core has all kinds of deficiencies. Here are desired changes:
getAttribute()
return null when the attribute does not exist.
WRONG_DOCUMENT_ERR
for using nodes across documents.
getElementsByTagName()
, createElement()
) work in a namespaced context.
The first two in this list are actually browser bugs from the early DOM implementations that did not get noticed and fixed on time. Meaning that websites rely on these features working in the “wrong way.” The flip-side is that the “wrong way” really is the “better way.” Not throwing exceptions and making things just work is much nicer for developers and having to separately invoke hasAttribute()
to see whether an attribute exists is not too great either. The third is something that was left mostly undefined and has therefore always been a problem. However, it became more noticeable when HTML5 came along and made the DOM almost identical for HTML and XHTML.
In addition to these DOM Level 3 Core also had all kinds of features nobody ever implemented and some features we wished were simpler. E.g. various validation features and ID attributes.
Taking this input, setting simplicity as a goal, and rewriting DOM Core from scratch is how we ended up with Web DOM Core. And while I am listed as editor, a lot of work was already done for me. Simon Pieters wrote the original outline. When he could no longer work on it Geoffrey Sneddon forked it and continued, adding a small testsuite in the process. Then when Geoffrey Sneddon stopped working on it Ms2ger forked his work and continued working on it. It was only at that stage that I started helping out.
Feedback on Web DOM Core is very much appreciated by the way. Do email public-webapps@w3.org if you want to influence DOM Core.