[Q] How should SAX support Namespaces?

Peter Murray-Rust peter at ursus.demon.co.uk
Mon Jul 20 23:33:54 BST 1998


At 07:32 20/07/98 -0400, David Megginson wrote:
>How should SAX support namespaces?  I can think of three options:

I am really pleased this subject has been raised because I think that it's
critical to solve it at the SAX level. I have been waiting for syntactic
guidance until the next Namespace draft is released, but playing with the
abstract ideas in JUMBO2. So far it's been going quite well. 

I have layered this on top of SAX and have created two classes:
	Namespace
	UniversalName

Every namespace generating event (a PI in the 1998May revision) can
generate a Namespace. The event has to be checked for uniqueness of prefix
(but no uniqueness of ns). These Namespaces can be retrieved by prefix from
an ElementName. The ElementNames generate a UniversalName which for
convenience inside the program I hold as nsString+SEPARATOR+localName. (The
spec suggest an ordered pair - if we can find a SEPARATOR which is
guaranteed not to occur in a URN  it just makes it a bit easier (this is
DavidM's #2 but with something other than COLON). [It never sees the light
of day, anyway]. 
	The Universal name is the thing which should be independent of document
instance syntax. I use it primarily for mapping to Java classes and - in
the absence of the rest of the world agreeing on how to do this - I have
temporised with a PI of the form:
<?jumbo:namespace ns="http://xml-cml.org" prefix="CML"
java="jumbo.cml.%sNode">
where localPart (with initial capitalises letter) replaces %s. Thus
CML:Molecule is mapped to jumbo.cml.MoleculeNode. When a common mechanism
is agreed this PI can be disabled.

	The problem I face is with other specs (especially XPointer). These will
have to be revised to fit namespaces, since I think relying on a prefix in
a given document may be very dangerous. Thus I'd like to be able to search
for <CML:Molecule> in a document using XPointer but cannot rely on the
'CML'. [I know that some people say XPointer shouldn't be used for such
'searches' but my will is weak.] The XPointer spec will have to read
something like:
descendant(2,%universalName{[http://xml-cml%SEPARATOR]?Molecule})
where the [...]? means optional and the %universalName operator means 'use
the UniversalName (which may or may not have a prefix according to what the
document author decided). This will then cater for a document like:

<?xml:namespace ns="http://xml-cml.org" prefix="CML"?>
<?xml:namespace ns="http://xml-cml.org" prefix="ChemML"?>
<CML>
  <ChemML:Molecule>
    <ATOMS>...</ATOMS>
  </ChemML:Molecule>
</CML>

This might appear perverse but all three elements types can 'belong to the
CML DTD'. [I am not invoking scoping.] In a multiauthor document I think
it's quite possible that we shall see:
<P>, <HTML:P> and <H:P> all referring to the HTML paragraph element.

I also pass over the rather hairy problem of validating DTDs. 

I wonder whether namespace-aware DTD software has to add defaults on the
basis of Universal names and not element types. Thus:

<?xml:namespace ns="http://xml-cml.org" prefix="CML"?>
<?xml:namespace ns="http://xml-cml.org" prefix="ChemML"?>
<!DOCTYPE CML [
<!ATTLIST CML:Molecule title CDATA #FIXED "A molecule">
]>
<CML>
  <ChemML:Molecule>...</ChemML>
</CML>

What attributes does the <ChemML:Molecule> element have??

By tackling this at the SAX level we have a really wonderful opportunity to
help ensure that ambiguities are as few as possible. I suspect that some
exciting areas will arise - this is new territory!

FWIW I am very pleased with what can be done with namespaces :-)

	P.




Peter Murray-Rust, Director Virtual School of Molecular Sciences, domestic
net connection
VSMS http://www.nottingham.ac.uk/vsms, Virtual Hyperglossary
http://www.venus.co.uk/vhg

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/
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
(un)subscribe 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