Re: Namespace treatment, cloning and node.supports

> We've adopted the position stated by the namespace working group, that the
> prefix is only syntactic sugar and the namespace URI is the "real"
> information. The prefix is retained primarily as a hint to serialization
> routines, and is mutable because you may want to hint differently.
> [...] 
> There are folks who want to generate
> a DOM with only localnames and URIs, and assign prefixes as necessary
> during serialization. If we didn't allow qualified names to collide, they
> couldn't do so.

Nevertheless we should be more aware of XML-wellformedness, since
namespaces are semantic sugar on XML.  Your folks can do their
serialization by first using the URI as the prefix and then replacing
the prefix by a shorter version (Delphi example):

// serialization
i:= 0;
while assigned(element.attributes.item(i)) do
  if element.attributes.item(i).prefix = 'thisIsOurVeryVeryLongURI' 
    then begin
      locName:= element.attributes.item(i).localName;
      qn:= 'shortPrefix:'+locName;
      vl:=  element.attributes.item(i).nodeValue;
      i:= 0;  // necessary, because we do not know what the 
              // implementation does with the index. Caching the 
              // attributes to be replaced could speed up this.
    end else inc(i);

The method I described can be used for every situation where you
prefer to operate with the "real information" before a serialization.
Just put the "real information" in the prefix and do everything that
is conformed with §5.3. of the XML Namespace REC which reads "... no
tag may contain two attribute which 1. have identical names, or 2.
have qualified names with the same local part and with prefixes which
have been bound to namespace names that are identical."   

> We do prevent the assignment of two attributes with the same localname/URI
> pair, of course, since those really are "the same attribute".

But that covers only (2) of the above cited §5.3. of the XML Namespace
REC.  I demand covering (1), too.  Beside the methods for namespace
treatment all operations on the DOM tree are as conservative as
possible by raising exceptions, if one tries to manipulate the
document tree in a way that violates its wellformedness. 
Unfortunately the namespace methods give up that principle for almost
no gain.

 Dieter Koehler, M. A. -
 Mittlere Kaulberg 22, D-96049 Bamberg, +49(0)951-5190726
 "": 1000+ Philosophie-Links
 "": Deutsche Philo-Links
 "": Open XML - XML-Komponenten fuer Delphi

Received on Wednesday, 1 March 2000 17:23:07 UTC