SAX2: Namespace proposal

David Megginson david at megginson.com
Mon Dec 20 20:02:17 GMT 1999


Stefan Haustein writes:

 > David Megginson wrote:
 > > Stefan Haustein <stefan.haustein at trantor.de> writes:
 > > > OK, what about
 > > >
 > > >  void startElement(String localName, AttributeList attr,
 > > > NameSpaceContext nsc)
 > > >
 > > > NameSpaceContext could be unmutable and thus be reused while unchanged.
 > > > I could still remember all parameters since there is only one more at
 > > > the end :-)
 > > >
 > > > The parser would only need to check if the NSC has changed and could
 > > > reuse the same object otherwise.
 > > 
 > > How would that help with attribute lists?
 > 
 > Where is the problem in adding something similar to the attribute lists,
 > e.g.: 
 > 
 > - getLocalName
 > - getType
 > - getValue
 > - getNameSpaceContext
 > 
 > NameSpaceContext could provide access methods for the namespace URI and
 > the prefix. It also
 > could provide a method "getName (String localName)" that builds the full
 > name if needed. 

I'm not sure that this approach buys us much, in the end.  You'd need
something like this:

  public class AttributeList
  {
    public int getLength ();

    public NamespaceContext getNamespaceContext (int i);
    public String getLocalName (int i);
    public String getType (int i);
    public String getValue (int i);

    public String getType (NamespaceContext c, String localName);
    public String getValue (NamespaceContext c, String localName);
  }

That does not seem substantially different than James Clark's
proposal:

  public class AttributeList
  {
    public int getLength ();

    public String getNamespaceURI (int i);
    public String getLocalName (int i);
    public String getType (int i);
    public String getValue (int i);

    public String getType (NamespaceURI c, String localName);
    public String getValue (NamespaceURI c, String localName);
  }

The only difference (other than being able to add methods into the
NamespaceContext class) is that you want the application to keep track 
of what the current Namespace URI is rather than having the parser
keep track of it.  

The main choice, then, is between the following (imagine that "foo" is 
a full URI):

  startNamespace("foo")
  startElement("bar", atts)
  character("Hello, world!")
  endElement("bar")
  endNamespace("foo")

and

  startElement("foo", "bar", atts)
  characters("Hello, world!")
  endElement("foo", "bar")

I cannot say that I have an extremely strong preference either way,
but if (as some people suspect) documents will consists of elements
from many Namespaces mixed together, the latter might be a little more 
efficient.

What does everyone else think?


All the best,


David

-- 
David Megginson                 david at megginson.com
           http://www.megginson.com/

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To unsubscribe, mailto:majordomo at ic.ac.uk the following message;
unsubscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)





More information about the Xml-dev mailing list