Re: SAX: New Idea for Entity Resolution

Alex Milowski (lex@www.copsol.com)
Wed, 15 Apr 1998 17:43:02 -0500 (CDT)


> Here's a different idea for SAXEntityResolver, that would add the
> ability for an application to return a character stream for _any_ URI
> (rather than just the document root):
>
> public interface SAXEntityResolver {
> public abstract String filterSystemId (String publicId, String systemId);
> public abstract SAXCharacterStream openCharacterStream (String systemId);
> }

Why not forego all this silliness of mapping system identifiers and allow
users to use URN's in an intelligent way? Essentially, a URN would
be used in the system identifier and you just *wouldn't* use the
public identifier! Then, in your environment, orthogonal to the
parser, you provide a way to resolve the URN.

Since entities can't be declared with only a public identifier, public
identifiers aren't very useful for interchange because I have to
specify a system identifier. When I specify a system identifier, some
parser might choose to use the system identifier rather than some
non-standard public/system id mapping scheme. Now my document is
broken from this receiver's perspective.

In effect, although the above interface is useful, it reduces
interchange in that I can make a document with broken system identifiers
work on my system. Essentially, I can make an *invalid* document valid!

Since I can't use public identifiers in XML in an intelligent way, I can't
really recommend using them. Unlike *generic* SGML, in XML I can using URN's
in system identifiers in an very intelligent way--the same way I used to use
public identifiers in SGML! ;-)

Makes you wonder why we have public identifiers in XML at all... they are
rather useless in their *current* form! :(

==============================================================================
R. Alexander Milowski http://www.copsol.com/ alex@copsol.com
Copernican Solutions Incorporated (612) 379 - 3608