Re: DOM Level 1 and namespaces

"Andrew M. Kuchling" wrote:
> 
>	  Namespaces don't
> really seem like something for Level 2 or higher, but are fundamental
> enough that they should be added to Level 1.

In spirit I agree that namespace support should come earlier than
a Level 2 spec will probably arrive, but then the XML Namespaces
"Proposed Recommendation" only finished its comment period today.


> Has anyone thought about what namespace support would look like?

Sun's XML package (http://java.sun.com/jdc/earlyAccess/xml) has
some such support.  I won't say it's everything that you might ever
want, but it's proven useful enough to implement a number of rather
namespace-aware XML based services.

There is an interface that lets you get at the basic annotations
for each Node.  Both Element and Attribute implementations support
this interface.  (I'm not keen on the interface name; suggestions?)

	interface NamespaceScoped extends Node {

		// Node.getNodeName() might return "prefix:foo"

		// returns the unscoped name:  "foo"
		String getLocalName ();

		// returns any namespace URI (e.g. for "prefix")
		String getNamespace ();
	}

There's an extended "Document" with a new element factory method
that take the namespace URI; for example, if the element is in the
XSL namespace you might want to have your elements implement some
methods that make it easy to apply stylesheet templates, etc.

There's an extended "Element" with accessors for Attributes that
take the namespace URI.  The extended "Node" method to access the
value of an "inherited" attribute likewise provide a way to access
them taking the namespace URI ... regardless, of course, of the
particular prefix that was used.


That's about all I remember off the top of my head.  There are
no primitives to answer questions like "what namespaces are
in scope at this node?" or manage prefixes.  If you want to filter
out nodes in a namespace-aware way (e.g. with TreeWalker) you have
to write the few lines of code yourself.  But if you're given a
document that uses namespaces, you can work with them.

That package is "early Access" meaning subject to change, etc.
Feel free to grab a copy (JDC registration required; it's free)
and send along any feedback.

- Dave

Received on Friday, 18 December 1998 04:06:33 UTC