Limpid and W3C Compliance

DOM Implementation

At the top level, the W3C recommendation specifies a DOMImplementation. This has only three interface functions:

public bool hasFeature();
  public DocumentType createDocumentType(...);
  public Document createDocument(...);

The hasFeature() function is there to allow a user to interrogate the implementation for its capabilities.

To instantiate a document, the user is required first to define a DocumentType, using createDocumentType, and then use it as one parameter for createDocument(). Moreover, the document must have a namespace and qualified name (no anonymous documents!). This potentially introduces a very contrived situation, such as when an internal document is created by a class for its own use.

Once a document has been instantiated, its factory functions are then used to instantiate other nodes to incorporate into it. Examples are:

public Element createElement(...);
  public Comment createComment(...);
  public Text createTextNode(...); // note name inconsistency

Limpid and DOMImplementation

Limpid implements DOMImplementation and its interfaces, but does not enforce their use, or the use of the Document factory methods, in the belief that most coders would prefer to have direct access to constructors for all DOM nodes. So, if you use Limpid, it is your choice how you do it.

Practical Conclusion

Limpid fully supports, but does not enforce, the W3C-recommended mode of operating.