- From: Curt Arnold <carnold@houston.rr.com>
- Date: Tue, 24 Jul 2001 22:12:27 -0500
- To: <www-dom@w3.org>
- Message-ID: <002701c114b7$a529b830$a800a8c0@CurtMicron>
Curt Arnold wrote: > > Background: > > There has been a little running discussion on www-dom@w3.org on an errata to > the DOM Level 1 specification DOMImplemention.hasFeature() method that > also appears to apply to the Level 2's Document.createElementNS and other > *NS methods. > > Basically, behavior was specified when a string argument was "unspecified" > (for hasFeature) or "null" for the createElementNS and similar. > > For example: For most, if not all, Java XML DOM implementations: > > ((DOMImplementation) impl).hasFeature("XML",null); > > will return true if the implementation supports any version of the XML > specification. The null argument acting as a wild-card. > > This will not work on either IE or Mozilla/NN 6 ECMAScript. > > In IE, the COM interface definition is specified as a BSTR (basically a > wchar_t*) and the text explicitly specifies the behavior when the BSTR is 0. > However, the COM variant coercsion code (or so I speculate) will not > convert a variant null (VT_NULL) to a BSTR and throws an exception > if you try hasFeature("XML",null). > > The corresponding Mozilla code > (http://lxr.mozilla.org/seamonkey/source/content/base/src/nsGenericElement.c > pp#880) > is passed an nsReadableString& and checks for a zero length string and known > versions strings, but no apparent check for a null string, so: > > document.implementation.hasFeature("XML","") returns true > > but > > document.implementation.hasFeature("XML",null) returns false > > I was a little surprised that the second call returned false which hints > that it actually > made it to the hasFeature method instead of failing on a preliminary > coerscion step > and throwning an exception. > > ---- > > Now for the question: > > 1. (Serious question) > > Does nsReadableString has a state that represents an null string distinct > from a zero length string? > > My guess from the code is that it does not, but I need to confirm that. > If it does, how do you check if a string is null. > > I expect that you could represent both null and a string using a variant > type, however changing the spec to conform to the limitations of the string > classes and deployed behavior is more practical than forcing a > change of the implementation. shaver@mozilla.org, scc@mozilla.org, and jst@netscape.com are working on representing null in these classes to make the DOM do the Right Thing. http://bugzilla.mozilla.org/show_bug.cgi?id=69468 > > 2. (More a curiousity question) > > Why does document.implementation.hasFeature("XML",null) return false instead > of > throwing an exception on a coerscion of null to a string? Does control ever > reach nsGenericElement::InternalIsSupported()? If so, how could it be > written > to return true? The DOM newsgroup is really the right place to discuss this stuff and perhaps get answers. John.
Received on Tuesday, 24 July 2001 23:12:45 UTC