W3C home > Mailing lists > Public > www-dom@w3.org > October to December 1997

Missing element methods, missing interface

From: Jeff Mackay <jmackay@vtopia.com>
Date: Tue, 28 Oct 1997 09:17:18 -0600
To: <www-dom@w3.org>
Message-ID: <01bce3b4$94f19510$02360a0a@jmackay.sa.enteract.com>
A bunch of comments:

1. The Element interface is missing some methods that I believe should
definitely be present:

    void removeAttribute(String name) raises NoSuchNodeException;

The semantics should be obvious. With the current interface, there is no way
to remove an attribute from an element. Setting the value to a null string
or to null should not actually remove the attribute.

    void setAttribute(String name, String value);

This is for convenience, but is much simpler than creating a new Attribute
object each time I need to add an attribute to an element. In the vast
majority of cases, an attribute's value list will only contain a single text
node.  Why not make this simpler? (the Attribute interface should also
support a setValue(String value) method).

    Attribute getAttribute(String name);

This is absolutely necessary. Without it, I have to retrieve the attribute
named node list from an element (which may be null), and ask it for the
attribute. And while we're at it:

    String getAttributeValue(String name);

This would return null if the attribute didn't exist (or if it couldn't be
represented as a string). Again this is for convenience.

    NodeEnumerator getAttributes();

Another convenience method, semantics should be obvious...

    StringList getAttributeNames();

This would allow delaying the evaluation of attributes until absolutely
necessary (although the Java package would need an interface defined for

2. The DOM desparately needs a factory interface. IDL doesn't support
constructors, which is fine, as long as a factory interface is provided to
actually create the objects provided by a service. I would suggest the
following minimal interface:

interface NodeFactory {
    public Node          newNode(int nodeType);
    public Node          newNode();
    public Element     newElement();
    public Attribute     newAttribute();
    public Comment   newComment();
    public PI                newPI();
    public Text            newText();
    public Document  newDocument();
    public NamedCharacterReference newNamedCharacterReference();
    public NumericCharacterReference newNumericCharacterReference();

Without the factory interface, ALL code that adds content to a document has
implementation dependencies.

3. The package name for the DOM Java interfaces should be "org.w3.dom" or

Jeff Mackay
Vtopia, Inc.
Plumbing for Online Properties
Received on Tuesday, 28 October 1997 10:16:26 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 20 October 2015 10:46:03 UTC