Re: What to do given both SYSTEM and PUBLIC?

Tim Bray <tbray@textuality.com> wrote:

> Hmm, seems I was right - we do *not* have a consensus on this one.
> The argument in favor of SYSTEM-first is that this is apt to
> be quicker and cheaper (particularly if you assume that a PUBLIC id
> usually generates a SYSTEM id).

That's not what I assumed.

I figured that -- for Web applications anyway -- the
most sensible resolution strategy for

    <!ENTITY FOO  PUBLIC "myname"  "oneofmyaddresses">

would be something like:

    1) See if there's a local catalog entry for the PUBLIC identifier
       "myname".  If so, use it.

    2) Otherwise, try to resolve the SYSTEM identifier "oneofmyaddresses"
       (probably a URL).

    3) If this fails, or no SYSTEM ID is supplied, attempt strategy [B]
       (see below).

    4) If this fails, tell the user "Sorry, can't resolve entity FOO.
       Please try to dig up the entity with PUBLIC ID "myname", add it
       to your local catalog, and try again."

Strategy [B] would initially be a stub routine that always fails.
If and when the URN group and/or SGML Open and/or the W3C SGML ERB
hammers out the details of how to do automatic FPI/URN resolution,
it would do an indirect PUBLIC ID -> SYSTEM ID mapping based on whatever
strategy they/we finally come up with.  (But quite frankly, I don't
expect to see this happening in my lifetime.)

I suspect that the heuristic in step (4) would be effective in many cases,
since most people who currently publish SGML on the Web tend to put a
"Click _here_ to download the DTD and supporting entity sets" link
somewhere on their entry page; XML publishers would likely do the same
(until of course the URN group/u.s.w./... comes up with a more reliable
mechanism, as above), and failing that, there's always comp.text.sgml,
Robin Cover's bibliography, InfoSeek, e-mail to webmaster@sun.com
asking "Could you send me a copy of '-//SUNSOFT//DTD Yabba Dabba Doo//EN'?
I can't find it on your Web page", whatever.  In other words, basically
the same way public PUBLIC identifiers are used today; I'd be happy
with that.

But I digress: the point is, I assume that PUBLIC identifier resolution
will in fact be *cheaper* than SYSTEM identifier resolution, since
typically (for XML anyway) the former will only involve a local catalog
lookup whereas the latter will involve a network transaction.

--Joe English