Re: Consensus on the gray areas of the DOM API

You remember almost correctly... Apologies if I was unclear; let's try it
again.

An Attr with no children is a legitimate object. It should have a
getLength() value of 0, and return false when asked hasChildNodes().

An Attr with one child, that being an empty Text node, is also a legitimate
object. It should have a getLength() value of 1, and return true when asked
hasChildNodes().

In other words, this doesn't require any special-case handling; just tell
the truth.

It isn't clear from the REC whether Attr.setValue("") should result in the
former case or the latter. I _think_ this can be safely left up to the
implementation, as long as the actual situation is correctly reported when
folks ask whether children exist, and as long as both return "" when a
getValue() is issued.  Since both cases are possible, code has to be
prepared to deal with both; "a difference that makes no difference is no
difference."

Just so folks know how I'm biased: In my implementation, a newly-created
Attr has no children, and Attr.setValue("") replaces the previous contents
(if any) with an empty text node. Both cases return "" as their getValue()
response. For now, setValue(null) happens to reset the Attr back to its
no-children case ... that's a behavior definitely not covered by the REC,
but I hate the thought of throwing an exception when there's a reasonable
interpretation of the request.


"Unofficial and Entirely Disagreeable" -- remember to add "But much
appreciated"! <g> As I said, despite my quibbles I like the idea of getting
these not-quite-errata nailed down more tightly, and the best way to do so
is to put them up as clear unambiguous statements and see which side, if
either, gets shot at.

______________________________________
Joe Kesselman  / IBM Research
Unless stated otherwise, all opinions are solely those of the author.

Received on Monday, 12 October 1998 17:09:05 UTC