Re: [Q] How should SAX support Namespaces?

John Cowan (cowan@locke.ccil.org)
Fri, 24 Jul 1998 16:37:47 -0400


Peter Murray-Rust wrote:

> [I]f 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].

Dagger! \U2020! Dagger!

> <?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 trouble here IMHO is that this mapping is app-specific, not really
document-specific. You will want to load various Java classes
depending on what you want to *do* to a particular element:
edit it, render it, translate its content into HTML, ...

> 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.]

I think you are over-generalizing. The point of namespace PIs is
to let you realize that my FOO:BAR is your BAZ:BAR, because my FOO prefix
has the same namespace URI as your BAZ prefix. So your document can
refer to some element of mine as BAZ:BAR, and a proper XLL engine
will actually return FOO:BAR. There is no need, IMHO, to handle
the case that you insist on finding literally "BAZ:BAR" as an
element name.

> 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??

None! DTD processing is SGML-compatible and namespace-blind.
To DTD-based software, CML:Molecule and ChemML:Molecule are
as different as A and \U0391 (GREEK CAPITAL LETTER ALPHA).

-- 
John Cowan	http://www.ccil.org/~cowan		cowan@ccil.org
	You tollerday donsk?  N.  You tolkatiff scowegian?  Nn.
	You spigotty anglease?  Nnn.  You phonio saxo?  Nnnn.
		Clear all so!  'Tis a Jute.... (Finnegans Wake 16.5)