DOM Compliance

This page maps the classes in the xg package to the Java interfaces in the Document Object Model (DOM). There is a reasonable correlation (it would be a worry if there wasn't!). Although xg currently supports only one of the DOM interfaces, it is intended to gradually implement them, and so slowly move towards DOM compliance (though full DOM compliance is not a strong goal and may never be achieved). Compliance to DOM is currently measured against the W3C Working Draft 18 March 1998.

DOM Level 1 Core

DOM Interface | xg Class | Notes on compliance
DOM | No direct equivalent - the closest being the xe package | Does not comply.
DocumentContext | No direct equivalent | Does not comply.
DocumentFragment | No direct equivalent | Does not comply. Potentially a useful addition for xe, in order to manipulate a selected portion of a document.
Document | xg_Document | Does not comply. xg_Document does not create other objects. While this is easy enough to do for fixed types, in the xe environment, we want to be able to instantiate objects of other types - functionality which is implemented at the xe level.
Node | xg_Node | Does not comply. Reasonably straightforward to implement, although xg_Node currently has no notion of 'current' node (and it sounds a rather untidy idea to have to do so).
NodeIterator | No direct equivalent | Does not comply.
TreeIterator | No direct equivalent | Does not comply.
Attribute | xg_Attribute | Complies. Note, however, that the current xe implementation only creates attributes if they are explicitly specified (ie. defaults are not created as defined in the DTD).
AttributeList | xg_AttList | Complies.
Element | xg_Element | Does not comply. Reasonably straightforward mapping, although with what look like a few fiddly differences (eg. DOM setAttribute equates to xg_Element.addAttribute, but its behaviour if an attribute with this name already exists is different). xg_Element has no equivalent to the normalize method.
Text | xg_Text | Does not comply. xg_Text has none of the DOM text manipulation functions, although these are easy to implement.
Comment | xg_Comment | Does not comply.
PI | xg_PI | Does not comply.

DOM Level 1 XML

DOM Interface | xg Class | Notes on compliance
XMLNode | xg_Node | Does not comply. xg_Node currently lacks the ability to relate to parts of the DTD which relate to it, and also does not properly handle entity references. As above, xg_Node has no notion of 'current' node (and no wish to!).
DocumentType | xg_Dtd | Does not comply. xg_Dtd is currently very simple, and is basically just a collection of its parts. In enhancing it to a level of reasonable usefulness, DOM compliance should be possible with little difficulty.
ElementDefinition | xg_ElementDecl | Does not comply. While able to parse an element declaration, xg does not properly record the details of what was parsed.
PCDATAToken | No direct equivalent | Does not comply.An equivalent needs to be added to xg in order to properly model element declarations, so DOM compliance could be added at this time.
ElementToken | No direct equivalent | Does not comply. As for PCDATAToken
ModelGroup | No direct equivalent | Does not comply. As for PCDATAToken
AttributeDefinition | xg_AttDecl | Does not comply. xg_AttDecl is currently too simple for practical use.
Notation | No direct equivalent | Does not comply.
EntityDeclaration | xg_EntityDecl | Does not comply.
EntityReference | xg_Reference | Does not comply. xg currently lacks proper support for references, including reference expansion.
CDATASection | xg_Cdata | Does not comply.

(This page was last updated on 8 August 1998 by SW.)