OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   Re: SAX2 Namespace Support

[ Lists Home | Date Index | Thread Index ]
  • From: David Megginson <david@megginson.com>
  • To: "XMLDev list" <xml-dev-digest@ic.ac.uk>
  • Date: Mon, 20 Dec 1999 20:32:43 -0500 (EST)

Richard Anderson writes:

 > Why are you trying to complicate ours lifes :)
 > 
 > Please change these from:
 > 
 > >   public void startElement (String ns, String name,
 > >                             AttributeList atts)
 > >     throws SAXException;
 > >
 > >   public void endElement (String ns, String name)
 > >     throws SAXException;
 > 
 > to:
 > 
 > >   public void startElement (String nsPrefix, String ns, String name,
 > >                             AttributeList atts)
 > >     throws SAXException;
 > >
 > >   public void endElement (String nsPrefix,String ns, String name)
 > >     throws SAXException;
 >
 > We can build ours DOM more easily this way dont have to buffer the other
 > namespace events.  I also would be surprised if at least 80% of SAX2 users
 > a) wouldnt mind this being present b) would probably use it

That was my original suggestion, but James Clark wisely pointed out
that it was possible to drop one of the arguments.  Consider the
following document:

 <html:p xmlns:html="http://www.w3c.org/1999/xhtml">Hello.</html:p>

With my proposal, what you will get by default is

  startElement("http://www.w3c.org/1999/xhtml", "p", atts);
  characters("Hello.");
  endElement("http://www.w3c.org/1999/xhtml", "p");

Nothing too tricky there, and that's all that most apps will ever
need.  If you pass in a LexicalHandler and the parser supports it, you
might get a little more:

  startNamespaceDeclScope("html", "http://www.w3c.org/1999/xhtml");
  startElement("http://www.w3c.org/1999/xhtml", "p", atts);
  characters("Hello.");
  endElement("http://www.w3c.org/1999/xhtml", "p");
  endNamespaceDeclScope("html");

I assume that's what you were thinking you'd have to cache, but that
would be wrong, since you could not with certainty map the Namespace
URI back to the original prefix used.  James's suggestion was that, at 
user option, the parser leave the original prefix on the name:

  startElement("http://www.w3c.org/1999/xhtml", "html:p", atts);
  characters("Hello.");
  endElement("http://www.w3c.org/1999/xhtml", "html:p");

This would never be enabled by default, but for the relatively small
class of apps that needed to know the original prefix, the prefix
would be available simply by splitting the name argument.

I like this approach because it doesn't throw the prefix in the face
of apps that don't need it -- to paraphrase Larry Wall, it makes common
tasks easy and uncommon tasks possible.


All the best,


David

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

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev@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@ic.ac.uk the following message;
unsubscribe xml-dev
To subscribe to the digests, mailto:majordomo@ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa@ic.ac.uk)






 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS